第五课 实战北斗及UPACK
第五课 实战北斗及UPACK
今天要讲两个压缩壳,一个是upack,一个是NSpack(这即是北斗壳了。)
这两个壳在木马程序加压缩壳的时候非常常见。还是那句老话,压缩壳永远是压缩壳,所以大家不需要害怕。下面直接看操作吧。
一: 实例之Upack壳
1.用OD载入,如果有提示是否分析代码,就点“ 不分析代码!”
2.F8单步向下跟踪调试,没有实现的向上的跳,向下的跳都可以步过,阻止实现的向上的跳。
3.遇到会跑飞的CALL我们就F7步入。
(也即是近call:1,离程序入口点近的call;2,跳转的距离短的call)
Btw:遇到程序无法向下跟踪调试的时候,在附近(上下均可)找一个(向下的)大跳转(跳的大小可以看线的长度(指段内转移),段间的跳点击汇编代码在信息窗口就可以看到它要跳向的地址,注:没有线的),F4运行到该跳,然后右键→跟随(或者回车)到达跟随的地址按F2下断点,然后shift+F9(忽略异常运行)运行到跟随的地址,然后再F2取消断点,接着就可以F8继续单步调试了。
反思:为什么会跑飞?为什么要在附近找一个大的跳转?
个人人为之所以在单步跟踪的时候会跑飞有,两种可能性:(我就想到两种)
1,当前位置已经是跟过头了,超过了OEP,当然程序会运行起来。
2,由于我们下的断点的位置不对,比如:在在设置ss:sp联合指向栈顶是,这是一个特殊的中断CPU是不会立刻响应我们的中端的,当然在CPU的机制中像这种不被立刻响应的特殊中断并不是仅此一例的,还有很多。还有像你把断点设在了nop上也是会跑飞的(这时候可以再nop的下一行F4了)。
3.其他可能导致异常的情况。
关于跟随:就是跟进去看代码,并不执行。如果我们按F8的话也会跟进去,但是它也同运行到位了。
二: 实例之NSpack壳(北斗)
1.用OD载入,如果有提示是否分析代码,就点“ 不分析代码!”
2.F8单步向下跟踪调试,没有实现的向上的跳,向下的跳都可以步过,阻止实现的向上的跳。
3.遇到会跑飞的CALL我们就F7步入。
个人觉得:ESP的原理是:因为壳程序在解压完毕后还是要把CS:IP设为指向OEP,所以一开始它就必须保存IP和CS,所以壳入口点一开始就出现的ESP多半就是它在保存OEP的CS和IP数据。有同学可能会问PUSHF,PUSHAD没有保存CS和IP的功能么?答案是的确是的,PUSHF和PUSHAD只提供了保存标志寄存器的功能,所以要另外保存CS和IP,
但保存在哪儿呢,一般性的做法就是栈了,所以一开始壳就设置了ESP。