cnpaf.net - 中国协议分析网

投递文章 投稿指南 RSS订阅 网站通告:
搜索: 您的位置主页>网络安全>工具使用>阅读文章

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

12-20 13:53 来源: 作者: 【 评论:0 浏览:
结合我了解的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的局限,或找到替代函数

收藏此篇文章内容到:
Tags:
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 广告合作 - 网站地图 - 版权说明 - 网站历史 - 世界排名 - 加入收藏 - 设为首页 - 返回顶部