首页
社区
课程
招聘
[旧帖] [原创]解决OD“在可执行文件中无法定位数据”错误[申请邀请码] 0.00雪花
发表于: 2010-9-6 13:39 1894

[旧帖] [原创]解决OD“在可执行文件中无法定位数据”错误[申请邀请码] 0.00雪花

2010-9-6 13:39
1894
本贴在暗组发过,暗组ID:hellotong88,http://forum.darkst.com/forum.php?mod=viewthread&tid=65061

不知可不可以申请邀请码?
////////////////////////////////////////////////////////////////////////////////////////////////
做免杀在对代码段或其他段的“零区”进行编辑的时候,OD“在可执行文件中无法定位数据”这个问题很普遍。

有人说,先修改了,然后保存一下试一试就知道了,个人认为这个方法可行,但是无法准确定位可编辑区域的位置及大小。

也有人说,用C32在“零区”填充90,然后再回到OD编辑,个人认为此说法毫无根据,完全错误。这种方法饭客的无特征码免杀教程里提过,源头在哪里就不得而知了。

于是自己研究了一下,现总结如下,不对之处请多多指教:
这个问题是由 内存对齐长度 与 文件对齐长度 不同造成的,一般内存对齐长度是1000,文件对齐长度是200。如果都是1000是不会出现这个问题的。

举个例子:Hash.exe(http://www.keir.net/hash.html)

以代码段为例,用PEID查看:

   .text     v.offset      v.size     r.offset     r.size
               1000         470C     400          4800

从上边我们可以看出,代码段的真是大小是:470C
                                          文件对齐大小是:4800
                                          内存对齐大小是:5000

内存大小(5000)与文件大小(4800)有一个差值,相差的这一段只在内存中存在,不再文件中存在,所以OD改了,也无法在文件中保存!!

分析结束!

另外说一下,可以修改的开始位置是:映像基址(一般是400000)+代码段偏移(一般是1000)+代码段真实大小(一般是v.size)
           不能修改的地方的开始位置是:映像基址(一般是400000)+代码段偏移(一般是1000)+代码段真实大小(一般是r.size)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//