Qt源码解析 索引
汇编逆向— 授权破解示例分析
问题模拟
运行环境
- x64dbg
- Windows 10
- serial.exe
运行效果
输入注册信息不对提示错误。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tV3bdLGO-1669017713175)(D:\Work\Code\luxiang\CSDN\ASM-serial.exe.gif)]
问题分析
步骤一:查壳
PEid工具使用,略过。
步骤二:分析目标程序
方法:逆向
此程序是已知代码的情况。为了演示。而实际上,我们分析的软件我们是看不到软件的源代码的。
程序逆向的基本步骤如下:
- 查找常量字符串;
- 通过常量字符串,分析汇编代码逻辑;
- 修改汇编代码;
- 验证补丁程序
查找常量字符串
步骤1:【调试 D】-【运行 F9】把程序运行起来,进入主模块
步骤2:运行起来后,程序在入口点暂停。然后在CPU(反汇编)窗口->鼠标右键->搜索->选择模块(一般选择当前模块,前提是得先执行到主模块)->字符串,分别搜索:Incorrect!Try Again.
字符串,双击搜索结果,软件会自动挑战到相关的代码段 。
由于搜索到两处,需要单独分析两处的不同
步骤3:查找到的两处信息分别设置断点,【调试 D】-【运行 F9】把程序运行起来,程序会进入到断点。
分析汇编代码逻辑
详细查看反汇编代码。如果看不懂不要着急。补充基础知识。
输入666,777点击【确定】。根据实际数据查看程序,分别判断输入用户明与密码的逻辑
cmp eax,ebx // 比较结果
je serial.40124C //相等的话,调用成功,也就是call serial.40134D指令
call serial.401362 //成功调用
jmp serial.4011E6
call serial.40134D //错误调用
jmp serial.4011E6
修改汇编代码
选中要改动的一行,【右键】–【汇编】,或者快捷方式,将[je serial.40124C]改成[jmp serial.40124C],点击【确定】。
忽略弹出的下一条指令,关闭窗口。
修改完成后可以继续运行,验证修改结果。确认无误后,再导出补丁文件。
验证补丁程序
可以直接运行程序。输入999提示ERROR.。输入任何其他字符提示OK。
连接知识汇编介绍
JAE ;无符号大于等于则跳转
JE ;等于则跳转
JB ;无符号小于则跳转
rIV1-1669017713179)]
连接知识汇编介绍
JAE ;无符号大于等于则跳转
JE ;等于则跳转
JB ;无符号小于则跳转