破解思路
1.处理关键跳,查找关键字符串;
2.寻找注册码;
3.修改关键CALL的返回值;
有的时候,程序很多地方都调用了一个关键CALL来判断程序是否注册,那我们只修改一个关键跳只能破解某一部分,要想全部破解,使用所有的功能,还需要修改关键CALL的返回值才行。
方法:定位到关键CALL,F7跟进,如果关键CALL调用之后,修改的AL的值,那么直接将关键CALL中的内容替换为:mov eax,1(或者0),将结果翻转就行,下一行再加上:retn。
常见API断点
1.GetStartupInfoA(取初始断点)
加壳程序破解可以使用此断点,断点的意思是,在壳完成了解压缩,在程序初始化之前设置断点。
2.GetFileSize(获取文件大小)
菜单栏->设置API断点->文件->GetFileSize
由于一般的壳都有压缩功能,所以脱壳后的程序会比原来的大,如果程序有有文件大小校验功能,那么脱壳之后的程序就不能正常运行,需要破解文件大小校验的功能。
3.ReadFile(读文件)
菜单栏->设置API断点->文件->ReadFile
有些程序启动的时候就要求用户注册,用户输入用户名和注册码之后,提示重启软件,软件重启会读取一个配置文件,这个配置文件里存储的就是我们刚才输入的用户名和注册码。
4.MessageBoxA(消息窗)
BP->BP MessageBoxA
点击MessageBoxA,可以在程序中所有的弹窗处下断点。
5.GetPrivateProfileStringA(读取ini文件)
BP->Archives INI->GetPrivateProfileStringA
针对重启验证,读取INI配置文件的程序,可以使用该断点,可以使用这个方法来查找注册码。
6.万能断点
参考软件按键事件中的万能断点。