练习笔记之160Crackme-003
本帖最后由 xiaoyu2032 于 2022-4-21 23:06 编辑爆破:爆破很简单,搜索关键字,找到关键跳转,je改jne即可。
也可以在在4085CE地址,将送如eax的数据地址由ebp-0x18改为ebp-0x1C;
爆破后运行结果如下:
追码:利用特征码816C24找到按钮事件,F8跟踪,可以找到多处疑似注册码位置,最后一个才是,可利用keymake2.0制作内存注册机,中断地址00408501。
异常:注册码输入非数字符号,程序会异常退出。异常退出在004085D2,字符串转双精度浮点数,此处转换函数不允许输入非数字字符,否则会异常退出。
算法:第一次尝试逆向算法,花了很长时间。步骤1:计算输入的字符串长度,乘以88888(0x15b38),然后加上字符串首字母的ASCII码(rtcAnsiValueBstr等于函数 Asc(string),计算字符串首字母的ASCII码),然后转换成字符串;
步骤2:浮点计算10.0/5.0,得到结果2.0,将字符串转换成浮点数,然后加上2.0,最后转成字符串。
步骤3:将字符串转成成浮点数,然后乘以3.0,再减去2.0,最后转换成字符串;
步骤4: 将字符串转成成浮点数,然后减去-15.0,最后转换成字符串;
判断:计算码除以输入码,然后判断结果是否等于1.0.
注册码计算程序:
#include "stdafx.h"
#include <Windows.h>
#include<stdio.h>
int main()
{
char str1;
printf("请输入字符串:");
scanf_s("%s",str1,30);
int a=strlen(str1);
long b=a*88888;
int k=str1;
b=b+k;
b=(b+2)*3-2+15;
printf("注册码为\n");
printf("%d \n",b);
system("pause");
return 0;
}
去除NGA:
用VBDecompiler反汇编后,可以得到窗口以及函数信息,其中SMSplash就是NGA窗口,查看属性可以发现其中有个定时器,其中有个7000的参数,就是等待7000ms。
7000换成16进制就是1B58,在代码区搜索58 1B(注意要反一下),可以找到406775,将其改为01 00,即为等待1ms。
还有一个方法就是4C法,详细可以看这篇个帖子https://www.52pojie.cn/thread-882601-1-1.html
此外,VB程序还可以用Form窗口的特征码来找,但是这里只能找到主程序窗口,NGA窗口的找不到,因此这里不能用。
=====================================
吐槽一下,论坛的编辑器的图文混编体验很糟糕啊,每次在编辑状态看起来都没问题的,提交后就发现好多地方图片没换行。再编辑加几个回车,结果发现有些改好了,有些没改好,再编辑,发现改好了的又变成不好了。。。。。。 niestcheer 发表于 2022-4-22 10:28
图文编辑,你不用MD的么?那个好用。我也是看论坛支持,特意去看了下Hmily给的MD的使用教程贴。https://www ...
MD感觉也有问题啊,点MD编辑按钮不会把当前已经编写的内容载入进去,每次都要手动复制粘贴吗? xiaoyu2032 发表于 2022-4-22 12:03
MD感觉也有问题啊,点MD编辑按钮不会把当前已经编写的内容载入进去,每次都要手动复制粘贴吗?
额,你这个问题,我都是看的教程里的格式,用记事本编辑,然后发帖的时候点MD,直接复制进去。 大神就是大神 我一定试一下 感谢分享!不错的学习资料! 大神厉害
谢谢楼主分享 谢谢楼主分享! 牛的牛的,学习了学习了 干货满满,必须点赞。虽然看不懂
牛的牛的,学习了学习了 图文编辑,你不用MD的么?那个好用。我也是看论坛支持,特意去看了下Hmily给的MD的使用教程贴。https://www.52pojie.cn/thread-717627-1-1.html