-
-
[原创]ESP定律脱壳卡巴斯基Sality专杀程序
-
发表于:
2018-6-27 17:18
10647
-
[原创]ESP定律脱壳卡巴斯基Sality专杀程序
ESP定理是脱壳中很基础但很好用的方法,运用的原理是堆栈平衡原理。堆栈平衡原理简单说就是在一个函数被调用之前和被调用之后,堆栈的数据是一样不变的。ESP脱壳就是利用这一原理,可以脱掉所有的压缩壳,以及大部分的加密壳。下面是一个实例分析:
拿到的程序是卡巴斯基的Sality专杀软件:
先用软件检测下该程序的壳:
检测结果是类似于UPX的卡巴斯基一种专用的壳,ESP脱壳方法应该能排上用场。
载入文件,得到的EP是这样的:
然后F8单步运行478358函数,会在 popfd 处停止下:
此时可以和之前设置Hardware breakpoint处的寄存器数据做对比:
Before: After:
可以明显地发现,在断点的前后只有EIP发生了变化,ESP恢复到了之前的数值,这就是堆栈平衡即ESP定律法。
然后继续跟进几步,即可看到OEP:
PS:实习生的我今天得到任务,要分析卡巴斯基Sality病毒专杀程序文件修复的原理,还顺带学习到了脱壳神定律:ESP定律。小生起步学习,大神勿喷。
ESP定理是脱壳中很基础但很好用的方法,运用的原理是堆栈平衡原理。堆栈平衡原理简单说就是在一个函数被调用之前和被调用之后,堆栈的数据是一样不变的。ESP脱壳就是利用这一原理,可以脱掉所有的压缩壳,以及大部分的加密壳。下面是一个实例分析:
拿到的程序是卡巴斯基的Sality专杀软件:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)