练习笔记之160Crackme-018、019
# 160CM-018、019这期比较简单,直接二合一了。
## 1. 018
018很简单,直接搜索字符串就能找到关键跳转位置,前后翻看一下就能找到明文密码:`<BrD-SoB>`。
## 2. 019爆破
019爆破也很简单,搜索字符串,根据字符串的内容就能定位到三个不同的弹窗提醒的位置,然后查看一下前面的跳转的位置,就能确定关键跳转在401642位置,nop掉就可以。
## 3. 019算法
这道题算法也比较简单,找到关键跳转后,前面的一小段代码就是算法代码。IDA打开后,F5生成伪代码,将变量名修改一下,就可以得到下面的代码:
其中有几个自定义函数,水平有限,IDA里面看不出来是什么功能,在OD里面动态跟踪一下就能基本确定是什么功能了。
整理调试,最后得到注册算法代码如下:
``` cpp
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
char text1;
unsigned long i,length,output,value;
output = 0x81276345;
printf("请输出text1:");
scanf_s("%s",text1,50);
length = strlen(text1);
if (length >= 5)
{
for (i = 0; i < length; i++)
{
value = text1; // 取第i个字母
output += value;
output ^= i << 8;
output *= ~(i * length) * (i + 1);
}
}
printf("注册码为:%lu",output);
system("pause");
return 0;
}
```
这里需要稍微注意一下的是,整型计算的变量要定义成长整型,有无符号无所谓,但是最后打印输出字符串的时候要用无符号的格式`%lu`进行输出,否则得到的都是负数。注册码验证如下:
白鱼啊 发表于 2022-5-30 00:11
大佬你这个课程是吾爱官方里面的吗?
这个不是课程,这是从论坛下的一个打包好的160个crackme程序,自己尝试破解,写的一个笔记。当然,论坛里面已经有很多这些题的破解教程,破解前尽量不看。 学习了!! {:1_899:}感谢大佬分享,收藏学习下! 感谢大佬分享,学习下!
页:
[1]