NSpack脱壳学习笔记 青旅半醒 2022-07-17 04:08 225阅读 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定律法(这还真好用啊)
还没有评论,来说两句吧...