[QUOTE=suyuanredi;355596]刚接触脱壳 看了脱壳常用思路有几个问题 麻烦前辈们指点下
1.下断点是为了什么,比如:
0040EA08 FF96 A8EC0000 CALL DWORD PTR DS:[ESI+ECA8]
0040EA0E 61 POPAD 我在...[/QUOTE]
1,下断点是为了什么?为了快速脱掉某壳,熟练点后就一步到位,断点断在壳快要解密或者解压缩
完毕的地方,中间的花天酒地和山青水秀我们是懒得再理会了,因为重要的事情在后面(脱壳之后的
分析和破解)
2, 0040EA0E 61 POPAD 在这句F2下断点后,看情况,如果前面有某些跳转刚好饶过了该语句
跳到JMP的话,那也没办法,说明用不到这句,也就不执行了;大多数情况下是会到这句的,而且会执行
其含义是恢复寄存器的原始值,即恢复现场,因为壳的任务已经到此结束了,那么接下来的任务是替
主体程序恢复良好的执行环境......与它对应的有PUSHAD等,表示相反含义,即因为下文要进入壳中
疯狂的执行什么,那么刚开始的时候大多数要先保存寄存器的值,存入堆栈,壳快解完的时候再通过
类似POPAD这样的指令恢复原先存入堆栈的内容
还有针对你说的那个先ENTER,再F2,再F9,再F2的过程是因为ENTER只是前瞻目的地址的指令,
实际上程序并没有真的就执行过来了,所以ENTER到了OEP之后,还要F2下断点,F9运行后断下,
使程序真的运行到了OEP,这个时候就可以开始DUMP等
3,解壳(普通壳)碰到非强制性跳转,(除JMP等),说明带有条件性的跳转,满足了条件就往回跳,或者不
满足条件就回跳的时候,可以在指令必经之路(后面的指令)下断点,再F9,直接执行通过循环,继续脱壳
F4的作用:执行到此为止,暂停,等待拥护调试......相当于先断点,再F9,再取消断点,这里要注意,F4作
用在程序必经的流程上,否则就飞走了
不知道这样的解释能接受吗?