- 测试环境
- WIN10(64位)
- VS2017
- ollydebug吾爱破解版
- 待破解程序
- Project1.exe(32位)
- 打开VS2017的工程查看待破解程序的源码
可以看到,这是一个简单的判断程序。
程序运行时提示输入密码,输入字符串"mima"才能提示"密码正确",否则提示"密码错误"
打开ollydebug吾爱破解版查看程序汇编代码(打开待破解程序后会自动弹出一个什么都不显示的黑控制台),然后查找提示的字符串(插件->中文搜索引擎->搜索ASCII)
出现程序提示的字符串
双击"密码正确",自动弹到对应的汇编代码处。
向上寻溯至je(即jump equal)上面(因为要绕过判断,就得修改判断之前的代码)的cmp处(即compare比较)
双击cmp->然后填入修改后的代码->点击汇编
点击运行按钮
破解步骤已经完成,下面测试破解效果。在弹出的黑色控制台窗口处输入任意字符串,可以看到都提示密码正确
- 破解中的关键汇编指令
- jmp(jump)跳往指定地址执行
- cmp(compare)比较
- je(jump equal)等于就跳转
- jne(jump not equal)不等于就跳转
- 附上测试所用程序的源码
#include<stdio.h>
#include<conio.h>
#include<string.h>
using namespace std;
int main(void)
{
char c[20];
char p[] = "mima";
printf("请输入密码:\n");
scanf_s("%s", &c);
if (!strcmp(c, p))
{
printf("密码正确\n");
}
else
{
printf("密码错误\n");
}
_getch();
}