03. Basic nag removal + header problems
实验要求消除掉多余的nags。
查看文件可以看到比较eax与0,不相等则会弹出第一个nags。
EAX是函数GetModuleHandleA()的返回值,该函数的功能是获取ImageBase。因此EAX一定不等于0。
可以想到的修改方法有:
- 修改cmp语句为cmp eax,eax
- 修改条件跳转语句je为jne
- 覆盖跳转部分为NOP
这里Lena的视频中提到了一个新的思路:修改可执行文件EP。
选中Dump区域,点击M。
双击PE头查看可以看到EP=1000:
可以直接在Dump区域修改相应位置的值从而改变EP,这里修改为1024:
重新执行,可以看到修改成功,此时成功消除了nags。
对于另一个nags,这里直接使用nop填充即可:选中右键-Binary-Fill with NOPs。
对于第二个文件RegisterMe.Oops,讲解视频中提到它的问题在于加壳,OD打开时显示的EP为结尾处。
点击M查看,可以看到PE头和节区信息存在问题:
查看EP=1000:
双击PE头并下滑:
可以看到需要修改以下信息:
进行修改:
保存再次查看程序正常: