这一课用来演示的软件是文件巴士。
打开网页一搜索,可笑的是搜索到的结果都是破解版,想找个原版的倒费劲了。
好容易找到一个,下好一查壳,还没有。。。
行吧,自己加一个VMP壳开搞。
第一步 OD载入程序后,直接F9运行,然后点击”,点击OK
这步什么意思呢
因为但凡有壳的程序,都会对数据进行加密。输入这个的目的就是跳到已经解码的部分
然后在已经解码的部分,可以进行搜索错误代码,找关键跳的操作。
但是,并不是所有的程序跳到已解码部分都是输入“401000”,具体怎么区别对待,原理又是什么,后面老师教了再说。这里只是知道这方法不是通吃的就行。
输入后点击OK,汇编窗口代码会变成全是白色的一长串,这时候就是跳到了已经解码的代码段,此时,右键----分析--从模块中删除分析,就回到了通常的反汇编代码显示。
第二步 搜索错误提示代码和寻找关键跳
软件运行后任意输入假码,看下报错信息,如下:
可以看到这里有一行提示:"免费试用版本剩余天数:30天"
下面搜索报错信息中的“注册失败”
在搜索结果中双击,返回反汇编窗口,一步一步向上找,发现有一个JE完整的跳过了注册成功的提示,那这个JE就是关键跳
这个跳转太长,中间省略了一部分截图
注意第一张图的红圈标识的JE和CALL就是关键跳和关键CALL
第三步 NOP填充
因为这个JE,跳过了注册完成的部分,所以不能让它跳转成功。那就用NOP掉。
在这个JE上下断点,F9运行,程序停在断点,把这个JE使用NOP填充掉,再按F8一步步运行
完成。再按F9运行软件,发现“免费试用版和试用天数剩余30天”的提示已经消失了
总结:
即使软件加了诸如VMP这种强壳,在不脱壳的情况下,
通过在内部已解码的字段寻找关键跳,然后NOP掉 的方法依然是可以绕过验证的。
不过,这样简单的办法也仅仅是针对对加壳并不了解的软件作者有效吧