关闭

NSpack脱壳学习笔记

标签: 逆向
159人阅读 评论(0) 收藏 举报

1,esp定律法:

开头pushfd(然后将32位标志寄存器EFLAGS压入堆栈)和pushad(将所有的32位通用寄存器压入堆栈)发现esp发生了突变,这样就可以使用esp定律法,发现到了popfd(标志寄存器出栈),发现一个大跨度的jmp//难道又和upx一样吗,这脱壳还真一个德行啊,当然啦,他们都是压缩壳嘛

我真傻,看到jmp oep就直接想单步进入,而不知道要先出栈,害我搞半天,为什么教程单步就能走到,为什么我就不行???

还好有写这些留下自己之前的错误,其实已经跳到oep了,只是自己不知道并且没看见代码,就以为是自己运行环境的问题,其实只要ctrl+A分析一下代码就看得到oep了。

call(调用)


2,单步跟踪法(和upx方法一样)注意:F4不是F2


3,两次内存镜像法

若资源段(.rsrc)找不到,就直接在code段下断点F2,后F9运行。继续单步跟踪,找到JMP OEP,很有可能需要代码分析,之后还得移除分析,就可以看到代码了


4,at GetVersion(直接下断点)

一般情况下适用于3.0版本之前的北斗壳,(nspack是由vc++写的)

在命令行输入at GetVision会跳转,在retn处F2下断点,之后运行,运行到retn的地址,然后断点解除。之后单步F8,基本就可以到达oep范围了。//这个很考验经验啊,我看新手还是不要用这个


有些情况peid可能看不到是什么壳(比较教程是很久以前的了)但是从区段可以看出个大概,2.4版本的一开始就是跳转可以直接单步,3.7也是基本可以使用esp定律法(这还真好用啊)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5145次
    • 积分:517
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:3篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论