Print动 发表于 2021-1-27 11:53:28

两种方法破解010Editor--编写注册机--爆破

本帖最后由 Print动 于 2021-1-27 11:54 编辑

主要内容1.010Editor介绍2.010暴力破解分析3.010算法分析4.010网络验证分析(此项省略)
功能介绍16进制修改文本修改模板解析各种文件格式文件对比
暴力破解思路1. 找到注册的窗口2. 测试注册窗口的反应3. 根据反应做出下一步分析的打算猜测API,API下断动态调试挑出敏感字符串,在程序中搜索4. 动态分析,定位关键跳转,修改代码5. 动态分析,定位关键call,修改代码
先试试暴力破解先安装一个正版的010 Editor30天的有效期
输入序列号的地方,随便输点什么进去
看一下基本的验证方式,有个弹框
查看一下弹出的提示框使用的API 是什么右键查看一下主模块
可以看到有很多对QT5的调用
调用很多,查找不是很方便,所以需要用IDA看一下,文件不小,IDA分析时间需要久一点查看一下导入表,发现没有CreateWindow类的函数调用
不管什么样的界面库,想要弹出那个窗口,都是要调用API的。找到和窗口有关的动态库模块二,user32的还得回到OD 中去找。就是这个模块儿。双击进去这个模块儿里面,都是窗口API函数。

如果不知道在哪下断点,就在这四类里面全部下断点了。挨个尝试还是比较麻烦的。底层调用的应该是CreateWindowCtrl+G 搜索一下,下断点。Chack一下,断下来了栈回溯分析一下可以看到调用时从这里开始的挨个进去扫一眼,看看哪个里面有没有敏感字符串看到这里,发现里面有敏感字符串分析一下代码接着向上看测试了一下,这里是可以断下来的,可以判断这里是一个关键跳转。接着挨个看一下这两个跳转发现这两个跳转是在一起的测试了一下,可以断下来跟着流程走一下,最终发现判断的是第一个标记中eax的值,上面的call应该就是一个关键函数(这是一个C++程序,是一个vs2013版本的程序)关键字符串向上找关键跳转继续向上分析总体分析截图F7进去,F8运行一下看到了三个关键的JE跳转将关键跳转置空这里弄失败了,尝试下一个方法既然你要求DB 是正确的,那么直接给你DB爆破成功了对了,在这之前还做了一个操作,关闭随机基址,这里忘记截图了爆破到此为止了。爆破思路总结:1. 找到注册窗口2. 测试注册窗口的反应3. 根据反应做出下一步分析打算猜测API,API下断动态调试挑出敏感字符串,在程序中搜索4. 动态分析,定位关键跳转,修改代码5. 动态分子,定位关键call,修改代码
最简单的方式,弹出提示窗口后,搜索提示的字符串,可以很快找到关键代码。
010算法分析关键函数一步一步分析边测试边写C语言测试
重新找到关键函数观察一下参数C++程序 ecx传参,这应该是一个This指针根据提示是一个字符串数组数据窗口跟随05E3A728继续数据窗口跟随密码的位置也找到了Esc返回继续数据窗口跟随不截图了,这个里面就没有什么有用的东西了***********************************************************如果访问到了用户名和密码再详细分析上面就应该是判断用户名是否为空继续走点M看一下属于全局变量,不清楚是什么东西,先不看这里了看一下输入的密码跟踪,找到用户名密码的访问代码一步一步分析,加注释反复推敲,找出规律写代码验证从下面的跳转开始看 跟着跳转走一下到现在,第三个字节是确定是写代码测试一下
int main(){srand(time(NULL));    byte k = { 0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA };      while (true)      {                byte k0 = rand()%0xFF;                byte k6 = rand() % 0xFF;                byte al = (k0 ^ k6 ^ 0x18 + 0x3D) ^ 0xA7;                if (al > 0)                {                        k = k0;                        k = k6;                        break;                }                while (true)                {                        byte k1 = rand() % 0xFF;                        byte k7 = rand() % 0xFF;                        byte k2 = rand() % 0xFF;                        byte k5 = rand() % 0xFF;                        DWORD ESI = (0x100 * (k1 ^ k7 & 0xFF) + k2 ^ k5 & 0xFF) & 0xFF;                        DWORD EAX = (((ESI ^ 0x7892) + 0x4d30) ^ 0x3421) & 0xffff;                        if (EAX % 0XB == 0 && EAX / 0XB <= 0X3E8)                        {                              k = k1;                              k = k7;                              k = k2;                              k = k5;                              break;                        }                }      }      printf("%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X\n", k, k, k, k, k, k, k, k, k, k);      system("pause");      return 0;}
4122-3344-5566-7288-99AA输入程序测试一下前面分析的没有问题下面分许用户名用到的代码用户名经过加密偷个懒,吧程序附加到IDAOD中进入函数F5进来看一下看着还是比较轻松的
双击这个数组,从IDA中把数组的地址复制下来去OD中找一下,复制出来。OD中找一下数组基址名字改一下,然后吧函数复制出来。参数名和函数名改一下关键代码
while (true)      {                BYTE k0 = rand() % 0xFF;                BYTE k6 = K;                BYTE al = (k0 ^ k6 ^ 0x18 + 0x3D) ^ 0xA7;                if (al >= 9)                {                        K = k0;                        K = k6;                        break;                }
      }      while (true)      {                BYTE k1 = rand() % 0xFF;                BYTE k7 = K;                BYTE k2 = rand() % 0xFF;                BYTE k5 = K;                DWORD ESI = (0x100 * (k1 ^ k7 & 0xFF) + k2 ^ k5 & 0xFF) & 0xFFFF;                DWORD EAX = (((ESI ^ 0x7892) + 0x4d30) ^ 0x3421) & 0xFFFF;                if (EAX % 0XB == 0 && EAX / 0XB == nRet)                {                        K = k1;                        K = k7;                        K = k2;                        K = k5;                        break;                }
去除网络验证(上面爆破中,有关键函数,自己进去找一下)
算法总结1. 判断用户名密码是否为空2. 将密码字符串转为16进制字节数据3. 验证密码16进制4. K = 0X9C 或者 0XFC或者0XAC5. SUB_00407644函数的返回值不能为06. SUB_004083C8函数的返回值不能为0且小于等于03e87. 将用户名转为ascii字符串
注册机总结1. 通过随机字节穷举符合条件的值2. 指定用户名,调用加密函数求出KEY3. 将KEY拆分,指定到密码字节数组4. 穷举剩下的字节

少年持剑 发表于 2021-2-2 13:59:43

每天都有1次免费给楼主评分送学币的机会!

timfang 发表于 2021-5-6 17:14:48

少年持剑 发表于 2021-2-2 13:59
每天都有1次免费给楼主评分送学币的机会!

先占楼,再膜拜

贪多了嚼不烂 发表于 2021-5-12 21:34:12

吃水不忘挖井人,我也去发帖分享好的资源。
页: [1]
查看完整版本: 两种方法破解010Editor--编写注册机--爆破