软件加密的脱壳方法可以分为手动和自动两种。
手动脱壳
手动脱壳需要使用调试工具,如TRW2000、TR、SOFTICE等,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。脱壳的一般流程是:查壳->寻找OEP->Dump->修复。找OEP的一般思路如下:
查看壳的类型:
先判断壳是加密壳还是压缩壳,压缩壳相对容易些,一般没有异常,找到对应的popad后就能找到入口。
分析跳转方式:
跳到入口的方式一般为:jmp OEP、push OEP ret、call OEP,当然也有其它方式如je OEP等,一般都是段之间的大跳转。
使用调试工具:
在OD的反汇编窗口里,通过观察段之间的大跳转来区别是否是段间跳转,从而找到OEP。
自动脱壳
自动脱壳使用专门的脱壳工具,最常用某种压缩软件都有他人写的反压缩工具对应。一些压缩工具自身能解压,如UPX;有些不提供这功能,如:ASPACK,就需要UNASPACK对付。自动脱壳工具包括:
Procdump v1.62:
可对付各种压缩软件的压缩档。
Caspr:
针对ASProtect加壳的专用工具。
Rad:
仅对ASProtect V1.1有效。
loader:
通用脱壳工具。
PEditor 、 ProcDump32、 LordPE:
PE文件编辑工具,用于dump和修复PE文件。
ImportREC、 ReVirgin:
重建Import Table的工具。
注意事项
版权保护:
脱壳行为通常是违法的,违反了软件的版权保护措施和使用规定。在脱壳过程中,需要尊重软件的知识产权,不得将脱壳后的程序用于商业用途或者传播。
技术难度:
手动脱壳需要较高的技术水平,熟悉汇编语言和调试工具。自动脱壳虽然相对简单,但也需要选择合适的工具并了解其原理。
合法合规:
在进行软件脱壳时,务必遵守相关法律法规,不要侵犯软件开发者的权益。
通过以上方法,可以有效地对加密软件进行脱壳。建议在合法合规的前提下,使用专业的工具和技术进行脱壳操作。