怎么脱E语言程序的VMP壳?

怎么脱E语言程序的VMP壳?,第1张

想要脱VMP的壳,首要工作当然是要找一个强OD。至于是什么版本的OD自己多试验几个,网上有很多,一般来说只要加载了你想脱的VMP加壳程序不关闭都可以。

其次,就是StrongOD.dll这个插件了,现在用的比较多的就是海风月影。下载回来后复制到你的OD程序所在的文件夹里面的plugin里。StrongOD的设置选项搞不懂就全部打钩。

接下来要做的工作就是搞清楚我们要脱壳的程序编程的语言了,可以用PEID或者fastscanner查看,如果在这里看不到也可以在OD载入以后通过里面的字符串判断了。例如VB的程序会出现MSVB----/VC的会出现MSVC---等等。这些都是程序运行所需要的windows链接文件。

做完这些预备工作接下来当然是用OD载入文件。文件载入后在反汇编窗口CTRL+G搜索VirtualProtect(注意V跟P要大写,至于为什么要搜索这个别问我)。一般来说搜索的结果会出现以下的类似:

    7C801AE3    E8 75FFFFFF     call kernel32.VirtualProtectEx

  我们在这里下F2断点。然后F9运行到我们下的这个断点。接下来我们就要注意观察堆栈窗口了。一般来说当我们F9运行到我们上面下的断点的时候在堆栈窗口会出现以下类似:

0012F66C   00401000  |Address = TradeCen.00401000

0012F670   000280D1  |Size = 280D1 (164049.)

0012F674   00000004  |NewProtect = PAGE_READWRITE

0012F678   0012FF98  \pOldProtect = 0012FF98

    我们要注意观察的就是在接下来我们F9运行的时候,ADDRESS和NEWPROTECT这两行的变化。按F9-速度别太快,直到NewProtect项变为PAGE_READONLY,这时候程序就释放完毕了。

0012F66C   0042A000  |Address = TradeCen.0042A000

0012F670   000069DE  |Size = 69DE (27102.)

0012F674   00000002  |NewProtect = PAGE_READONLY

0012F678   0012FF98  \pOldProtect = 0012FF98

现在可以取消刚才我们下的断点了。接下来就是找OEP了。找OEP的时候我个人的一个经验就是OEP一般就在接近上面的ADDRESS地址的附近。例如上面的地址是0042A000,我一般就在这个基础上减到420000搜索程序的特征段,当然我们也可以直接跳到401000开始搜索。虽然我们搜索的范围比较大,但是因为我们搜索的是命令序列,所以工作量还不是很大。

CTRL+G--上面的地址,然后CTRL+S 查找命令序列。命令序列的内容就是我们用查到的编程语言的特征段。我们可以在特征段里面选择两三句固定不变的命令查找。例如VC++6.0的特征段是:

0046C07B U>  55                push ebp

0046C07C     8BEC              mov ebp,esp

0046C07E     6A FF             push -1

0046C080     68 18064C00       push UltraSna.004C0618

0046C085     68 F8364700       push UltraSna.004736F8

0046C08A     64:A1 00000000    mov eax,dword ptr fs:[0]

0046C090     50                push eax

0046C091     64:8925 00000000  mov dword ptr fs:[0],esp

0046C098     83EC 58           sub esp,58

0046C09B     53                push ebx

0046C09C     56                push esi

0046C09D     57                push edi

我们可以只搜索前三条命令。找到符合前三条命令的,我们在对照接下来的命令。只要命令相符那这个地址八九不离十就是OEP了。如果在ADDRESS地址附近找不到OEP,那就只好用笨办法,从401000开始找吧。

找到OEP地址后,我们在OEP处点鼠标右键《此处为新EIP》。接下来就可以dump啦。通常选择OD的dump插件脱壳要好点,用loadpe脱壳后要么程序不运行要么干脆没脱。用OD的dump插件脱壳的时候,脱壳窗口下面的(重建输入表)项前面的勾一定要去掉。

vmp保护标记开始()和VMP保护标记结尾 ()是加vmp壳需要用到的,程序在编程出来以后,vmp加壳软件会找到开始和结束标记,把他们之间的代码保护起来,达到防止破解的目的。

写内存字节集的介绍以“ 写内存字节集2 (进程ID, 十六到十 (“004F194C”), 十六进制到字节集 (“90 90 B8”))”为例子:

第一个参数进程ID,就是你要修改的目标程序的ID,每个程序的都有一个单独的ID。

第二个参数:十六到十 (“004F194C”),这个是要修改的内容所在内存地址,因为易语言只支持10进制的,所以需要把16进制的地址“004F194C”改成10进制的,在OD里面看得很明显。

第三个参数:十六进制到字节集 (“90 90 B8”),这个就是要改成的效果,也就是在第二个参数的内存地址那里,把里面的数据改成“90 90 B8”(不带双引号)

(“90 90”)这种数据应该是nop掉。

1、可能开错东西了,.vmp后缀的根本就不是一个应用程序。

2、可能是你没有下载完或者下载出错了。这格式可能是一个下载中文件的后缀,比如迅雷下载没完成的话,文件有俩后缀。

其他就不太清除了,我没用过外挂,所以你说的这5801的外挂根本不了解


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11380151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存