老文章档案 · 2003 年

被加壳vb5/6程序的OEP定位经验

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-08-27 · 作者:小球 人气: · 出处:赢政天下整理收藏)

近日看了woodmann论坛上+splaj关于利用特征字符寻找被加壳程序的oep方法,颇有兴趣!结合我了解的vb5/6可执行文件的结构,说说如何定位其OEP。

任何反编译过vb程序的人,总会见到其OEP是如下结构:

//******************** Program Entry Point ********

:00401060 68B4114000 push 004011B4

:00401065 E8F0FFFFFF Call

对于以地址004011B4开始的一段代码,在vb程序结构中将之称为ExeInitStructure,保存着程序运行初始化所必须的资料;而其也必定是以特征字符“VB5!”开始。所以对于被加壳的vb5/6程序,可以运行后用winhex搜索内存,查到“VB5!”地址,在此为004011B4,再搜索hex值“B4114000”,即搜索到地址00401061,将此地址-1就是OEP:00401060

此外,利用vb函数addressof我们可以作一些研究工作。

建立一个vb标准exe工程,去除form,加入一个.bas文件,于中写入

Attribute VB_Name = "Module1"

Private Sub Main()

Dim a As Long, c As Long

c = getaddress(a, AddressOf Main)

MsgBox ("Start address of Main() is " + Hex(a - 16))

End Sub

Public Function getaddress(a As Long, X As Long)

a = X + 16

End Function

编译后运行,可以显示sub Main()代码的起始地址。有兴趣的不妨研究研究,看看如何突破addressof的局限,或找到替代函数

(出处:赢政天下整理收藏)

相关文章:

相关软件:

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史