第五课 实战北斗及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。

 

posted @ 2012-08-28 21:51  eldn  阅读(194)  评论(0编辑  收藏  举报