使用单步跟踪逐步调试
通过单步跟踪调试的方法,进行观察调试
还是通过查壳工具查壳
看到已经加壳,通过OD打开调试
点击f8进行调试,当出现程序跑飞,自动运行起来时,就用ollydbg重新打开,慢慢调试。
但在调试过程中会出现一些反复跳转,这时就需要手动跳转了,可以在跳转前点击断点,选中跳转的下一行,手动跳出 循环。
我们在跳转时,往往要观察一些标志性的词汇,我个人认为,这些不一定全都会,但要慢慢积累,因为不同的语言,标志也不同,需要自己注意,这里的标志性词汇叫做popad
当调试到popad的时候,也就意味着我们离脱壳的地方不远了。继续调试,在调试时还是要靠个人的观察力,在我调试时,疯狂跳转后我发现一般在有一个红括号的地方,在结束时就会发生跳转,如果注意到这一点,就会节省很多时间。当调试慢慢进行,我们最后可能会突然跳转一个乱码区,这也是一个标志,意味着时机到了,点击分析,从模块中删除。
之后我们就跳转到正常的区域,这时就是去壳的时机,点击去壳,生成新的软件
重新打开软件,发现已经去壳,显示使用语言
提示:
我在做的时候不断的在想为啥要这样一步一步的做啊,多慢啊,可是在做完之后发现,这是真的香。
如果留心观察,你会慢慢发现一些规律,这是那些快速工具所无法达到的效果,当你再次 回过头来看,这就是对代码的直觉掌握,当熟练之后就可以凭着感觉,直接看代码,插断点,甚至直接到去壳处,这都是建立在代码调试熟练的基础上的,我觉得很有用,所以就分享想了一下,希望对想要入门的战友有所帮助,学习路上道阻且长。
搜索关键词直接跳入
有了上面的经验,可以确定去壳处就在popad附近,所以也可以直接通过搜索关键词
输入查找命令,popad,程序跳转到相关的popad代码处,通过测试,查找到符合的popad
这里也是利用上面的逐步调试原理
点击运行到此处,逐步调试,就会出现乱码,将乱码删除,就会出现脱壳端。
这里就不重复了,点击脱壳,然后测试成功。
这就是通过分析脱壳了的大致过程