这是吾爱破解上的软件破解入门教程, https://www.52pojie.cn/thread-1358649-1-1.html
浅尝辄止了一下,记录一点小小的收获
软件破解是逆向工程的一个分支,是绕过软件创作者的使用限制的技术
要破解的有两个方面:
- 注册验证
- 反调试
注册验证
也就是向软件证明自己的身份,来告诉创作者:我是付过钱的
验证方法有:本地验证和网络验证
本地验证又有:
- 重启验证:注册不过期,例如使用注册码后,软件在注册表创建“已注册”的标志,每次软件打开都会先读取一次注册表
- 非重启验证:注册会过期,例如账号密码验证,每次重启软件都要重新输入账号密码
这套教程只讲解本地验证的破解方法
反调试
其手段大致四类:
- 通过环境查看手段,判断是否有调试器打开,例如看进程
- 对用户正在使用调试器的行为进行动态识别,是不是正在用调试器对软件进行调试和修改
- 对软件完整性进行检测,例如把加壳后的软件解壳,软件的体积和内容发生更改后,会被检测到
- 干扰处理:就是让你看不懂,加壳、加花、虚拟化代码
如何破解?
用反汇编器和调试器下断点,找关键代码,并进行适当的修改——打补丁
常用的工具例如ida和ollydbg
然后,要用吾爱破解专用ollydbg,因为有插件
怎么下断点?
- 关键字
软件的内容分为指令和数据,在指令和数据区搜索“登录失败”之类的关键词就能锁定关键代码的位置 - api
通常软件的弹窗、按钮等的功能都是对系统api的调用,而不是软件开发者花时间自己的写的
搜索对应的api,下断点
动态调试这个软件
就能找打关键指令的位置
找到关键指令了,下一步?打补丁
阅读它,你需要能看懂汇编代码,你需要了解寄存器,你需要着重学习push、pop、call、ret、jmp和各种变体指令,如果你能懂call stack就更好了
PS: call stack 这个wanwan破解并没有教,如果你感兴趣,你可以穿越到几个月前访问begin.re学习这个知识,它下架了:(
假如这是个要本地登录的软件
你可能看指令的时候,看到“登录成功”和“登录失败”的弹窗指令,它们挨的很近
你只需要找到附近的je指令(也可能是jle或jge)改成jmp,跳过“登录失败”的弹窗指令,来到“登录成功”的指令
这会导致什么结果呢?你怎么登录都会显示“登录成功”,因为你无法“登录失败”
总之
破解的流程是:
找关键代码》分析〉跳过失败的指令》破解成功
我不太想在软件破解上更进一步,卖破解软件是要吃牢饭的