运行环境win2k sp2
目标软件win2k下的notepad.exe
我刚接触pj,现在在学手动脱壳,顺便学习一点简单的汇编语言。我开始学的是脱UPX的壳,在脱UPX Graphical 1.33+Scrambler和upx shell v0.98和upxshell 3.0和upx3.42壳中我发现他们的思路基本上是一样的,都跟我脱UPX Graphical 1.33+Scrambler是一样的,包括OEP(01006420)都是一样的.思路都是ctrl+f查找popad(我想这应该就是传说中的特征码)然后F4,然后F7进入jmp后程序跳转(记住jmp后的地址。地址是01006420也就是程序的OEP)到跳转后的地址处用loadpe脱壳,脱壳后的文件不能运行,有错误,再修复输入表后,完成脱壳。奇怪的是我听说jmp后的地址就是OEP,但是用import时并不可以,提示无效的OEP,与内存中的地址不符。
后来开始找资料解决,然后在看雪老师的《加密与解密》一书中,发现其实这个OEP填写的是OEP的RVA。也就是OEP-ImageBase.于是开始找ImageBase,我嫌麻烦也就没用什么工具,直接用OD脱壳,然后在弹出的窗口中发现了了一个起始地址,这个应该就是基地址了,然后RVA就用OEP-ImageBase算出来了。然后修复,OK了。
但是在脱upx3.42我发现有点与前面几个不一样。
我搜索popad后,下面的代码如下
0101155D 61 popad
0101155E 8D4424 80 lea eax,dword ptr ss:[esp-80]
01011562 6A 00 push 0
01011564 39C4 cmp esp,eax
01011566 ^75 FA jnz short NOTEPAD.01011562
01011568 -E9 B04EFFFF jmp NOTEPAD.01006420
可以发现下面有一个跳转,我在0101155D用F4之后再用F7跟入后到不了01011568这,会在01011566和01011562来回循环,我没办法只有把它给nop掉,nop掉之后程序可以到达
01006420 55 push ebp
这后,我然后用loadpe脱壳,脱壳后的文件不能运行,有错误,再修复输入表后,完成脱壳。(其实可以不用loadpe脱直接用OD就可以脱,而且OD也顺便帮你修复输入表了,这里这样做只是为了多锻炼一下,谁叫我菜呢)
我的问题是这个小循环被我nop掉以后对程序有什么影响呢?我经常能看见免杀的过程中很多nop的操作,这对文件都会产生哪些影响呢?还有可不可以不nop啊?没办法,刚学,好多都不懂,只好nop了^&^
还有就是怎样修改调试的程序保存后,重新载入然后让它重新分析。我查看论坛里的一篇文章《OD常见问题中》我找到了相关的内容:原文如下
Q:OD现在有一个毛病,一旦修改了调试的程序并保存后,重新载入后OD就会重分析程序,原来保存的Udd文件就失效,给调试带来很大不便。
A:问题在这:Olly Advaced 插件,附加选项Ⅱ /忽略被修改的断点处内存(4st0ne回答)
我发现我跟他的问题正好相反,我是不想保存,他是想保存,但是我打开OD,在插件菜单里怎么也找不到Olly Advaced 插件。这是为什么呀?我用的是cao_cong汉化翻译的中文版OD,v1.10。
还有我装DriverStudio3.2中的softice后,启动运行start softice一开始弹出个cmd窗口,没几秒钟,一闪就没了,再重新运行就提示error code 1056,配置的实例已在运行中。please check the Event Viewer for more information.这是怎么回事啊
刚学PJ,连菜鸟都算不上,问的白痴问题,请大家不要笑^&^
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课