小弟也才学破解没多久,说的不对的地方请各位大侠指正!
1、用PEID等工具查看程序有没有加壳,一般都会有壳的,有专用脱壳工具的就省得麻烦了,直接用工具搞定。没有的话就只能在Ollydbg等动态调试工具中手动脱壳了,建议先到Google或是百度上搜索一下有没有前人脱类似壳的例子。具体过程不多说了。
2、运行脱壳后的程序,看有无自校验,有的话要先解除。一般是在Ollydbg中下CreateFileA、GetFileSize、ReadFile等断点来找到程序的自校验处,可以同时开两个Ollydbg来分别调试脱壳前后的程序,找到关键跳转处修改之。对于一些变态的程序要考虑使用代码Patch技术,即在壳解压完进入OEP前一刻运行自己的patch代码,此是后话。
3、标题中提到了Delphi程序,该是DeDe出场了,它强大的反编译功能我无法用语言描述,用过的人都知道。用DeDe反编译脱壳后的程序,如果不出意外很容易就能看到和Delphi源程序结构类似的汇编代码。通过它很快就能确定各个菜单、控件的事件代码,再在Ollydbg中相应处下断,找出爆破点或是算法代码。DeDe美中不足的是无法显示函数调用(如A函数在程序中具体有哪些地方调用它,有些时候这样的信息非常重要),还好有W32dsm这个静态反汇编工具帮我们解决这个难题。要想实现快速破解Delphi程序,应该DeDe、Ollydbg、W32dsm三者结合起来使用。