本贴在暗组发过,暗组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)