|
win32 手工脱壳方法总结:
1、单步跟踪,遇到向上的跳转或循环直接跳到下一行执行,直到发现popad之类的恢复现场的指令,并且附近下面有长跳转,跳转目的地址一般就是oep
2、esp定律法,把壳看到一个大的过程调用,进入壳执行一步,然后在栈顶下硬件访问断点,壳这个过程执行完毕,必然会平栈,直接运行,硬件断点触发
的时候就是壳这个大过程执行完的时候,再单步跟几步,就可以找到oep了,走方法1.
3、两次断点法,去掉全部异常,在rsrc内存区下访问断点,断下来以后,去掉断点,在代码段下断点,触发之后,再单步跟踪法。原理:
windows下,未加壳程序,执行的时候,镜像加载器,会通过ntdll接口优先访问rsrc区段中资源做一些处理,然后再进入代码段的oep,如果加壳了,一般进入完壳的进入点后,等壳代码执行完,会先访问rsrc,再text。所以使用此种方法,需要先将程序断在壳入口,然后两次内存断点法。
4、末次异常法,勾选od全部异常,记录正常情况到程序跑起来,异常触发的次数为X,重新运行,异常到X-1次的时候,停下来单步跟踪法。
5、出口标志法,popad popfd等标志,搜索这些标志,单步跟踪法
6、od模拟跟踪法,代替人工单步跟踪
win32免杀基本方法(目前就是让杀毒软件特征码匹配不到,汇编指令等效替换)
1、加花
2、加多花
3、加壳,再给壳加花
4、修改壳头代码
5、seh跳转代码
6、移动pe头覆盖dos头,相应修改
7、修改reloc
8、去头加花
9、loadpe重建pe
10、给pe添加数字签名
|
|