文章来源i春秋
一、普及
What?壳
② 我这是一个商业的程序,是用来赚钱的,怎么可以被别人破解呢,那我就是加密保护壳(Safengine、VMprotect、winlicense、Themida)保护程序不被非法修改和反编译。
③ 其他(病毒、木马加壳,Anti-AntiVirus)
DO?
脱壳
就是把保护壳去掉更好的调试和破解能清楚看到代码
OEP
程序的入口点如果我们找到OEP我们就能快速脱壳就类似于找到钥匙就能开门
壳就是一把锁OEP就是锁孔
IAT
IAT就是指针脱壳的话可能要修复指针如果没有指针就相当于人只有一个身体没有灵魂
壳可能会对指针进行处理,修复输入表就是修复IAT
段首和段尾
段首,是上一段的结尾也是下一段的开头一段是以retn开始和retn结尾。我们经常听到在段首下断,所以我们要找的就是retn下面第一个push ,段首是以push开始滴,所以我们不会在retn那里下段而段尾我们是在retn处下断,因为软件的子程序是以retn返回到某一地方所以返回的时候要在retn出下断。
ESP定律的原理就是“堆栈平衡”原理。
1、在命令行下断hresp-4(此时的ESP就是OD载入后当前显示的值)
2、hrESP(关键标志下一行代码所指示的ESP值(单步通过))
2、hrESP(关键标志下一行代码所指示的ESP值(单步通过))
CALL
1.向堆栈中压入下一行程序的地址;
2.JMP到call的子程序地址处。
1.向堆栈中压入下一行程序的地址;
2.JMP到call的子程序地址处。
RETN
与call对应的就是RETN了。对于RETN我们可以这样来理解:
1.将当前的ESP
与call对应的就是RETN了。对于RETN我们可以这样来理解:
1.将当前的ESP