吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16604|回复: 34
收起左侧

[原创] 010 Editor 7.02 注册算法分析

  [复制链接]
whyida 发表于 2017-1-27 13:37
本帖最后由 whyIDA 于 2017-1-29 14:02 编辑

010 Editor 7.02 是一款文本编辑工具,算法相对简单,没有采用不可逆的加密算法。
用od或者x64dbg等工具打开010 Editor 7.02
按格式输入随意密码点击注册,出现错误提示。搜索字符串“thank you",很容易找到关键位置。

捕获.JPG

eax为2D 注册成功,E7则失败。下面的代码已经添加注释,应该能看懂。
[Asm] 纯文本查看 复制代码
010D584D | 8A 5D DF              | mov bl,byte ptr ss:[ebp-21]       |
010D5850 | 8A 7D E1              | mov bh,byte ptr ss:[ebp-1F]       |
010D5853 | 80 FB 9C              | cmp bl,9C                         | ;密码第2组第2位是否为9C
010D5856 | 75 70                 | jne 010editor1.10D58C8            |
010D5858 | 8A 45 DC              | mov al,byte ptr ss:[ebp-24]       | 密码第一组第1位
010D585B | 32 45 E2              | xor al,byte ptr ss:[ebp-1E]       | 密码第一组第1位 xor 密码第四组第一位
010D585E | 88 45 E8              | mov byte ptr ss:[ebp-18],al       |
010D5861 | 8A 45 DD              | mov al,byte ptr ss:[ebp-23]       |
010D5864 | 32 45 E3              | xor al,byte ptr ss:[ebp-1D]       | 密码第一组第2位 xor 密码第四组第2位
010D5867 | FF 75 E8              | push dword ptr ss:[ebp-18]        |
010D586A | 0F B6 C8              | movzx ecx,al                      |
010D586D | B8 00 01 00 00        | mov eax,100                       |
010D5872 | 66 0F AF C8           | imul cx,ax                        |
010D5876 | 8A 45 DE              | mov al,byte ptr ss:[ebp-22]       | 密码第二组第1位
010D5879 | 32 C7                 | xor al,bh                         | 密码第二组第1位 xor 密码第三组第2位
010D587B | 0F B6 C0              | movzx eax,al                      |
010D587E | 66 03 C8              | add cx,ax                         |
010D5881 | 0F B7 F1              | movzx esi,cx                      |
010D5884 | E8 6F 1E 33 FF        | call 010editor1.4076F8            | ;算法1,结果必须为0xFC
010D5889 | 0F B6 C0              | movzx eax,al                      |
010D588C | 56                    | push esi                          |
010D588D | 89 47 1C              | mov dword ptr ds:[edi+1C],eax     |
010D5890 | E8 B6 2A 33 FF        | call 010editor1.40834B            | ;算法2,eax必须为小于等于0x3E8
010D5895 | 8B 4F 1C              | mov ecx,dword ptr ds:[edi+1C]     |
010D5898 | 83 C4 08              | add esp,8                         |
010D589B | 0F B7 C0              | movzx eax,ax                      |
010D589E | 89 47 20              | mov dword ptr ds:[edi+20],eax     | edi+20:L"χ"
010D58A1 | 85 C9                 | test ecx,ecx                      |
010D58A3 | 0F 84 BC 01 00 00     | je 010editor1.10D5A65             |
010D58A9 | 85 C0                 | test eax,eax                      |
010D58AB | 0F 84 B4 01 00 00     | je 010editor1.10D5A65             |
010D58B1 | 3D E8 03 00 00        | cmp eax,3E8                       | ;eax必须为小于等于0x3E8
010D58B6 | 0F 87 A9 01 00 00     | ja 010editor1.10D5A65             |
010D58BC | 83 F9 02              | cmp ecx,2                         |
010D58BF | 1B F6                 | sbb esi,esi                       |
010D58C1 | 23 F1                 | and esi,ecx                       |
010D58C3 | E9 B3 00 00 00        | jmp 010editor1.10D597B            |
010D58C8 | 80 FB FC              | cmp bl,FC                         |
010D58CB | 75 1F                 | jne 010editor1.10D58EC            |
010D58CD | C7 47 1C FF 00 00 00  | mov dword ptr ds:[edi+1C],FF      |
010D58D4 | BE FF 00 00 00        | mov esi,FF                        |
010D58D9 | C7 47 20 01 00 00 00  | mov dword ptr ds:[edi+20],1       | edi+20:L"χ"
010D58E0 | C7 47 30 01 00 00 00  | mov dword ptr ds:[edi+30],1       |
010D58E7 | E9 8F 00 00 00        | jmp 010editor1.10D597B            |
010D58EC | 80 FB AC              | cmp bl,AC                         |
010D58EF | 0F 85 70 01 00 00     | jne 010editor1.10D5A65            |
010D58F5 | 8A 45 DD              | mov al,byte ptr ss:[ebp-23]       |
010D58F8 | 32 45 E3              | xor al,byte ptr ss:[ebp-1D]       |
010D58FB | 0F B6 C8              | movzx ecx,al                      |
010D58FE | B8 00 01 00 00        | mov eax,100                       |
010D5903 | 66 0F AF C8           | imul cx,ax                        |
010D5907 | 8A 45 DE              | mov al,byte ptr ss:[ebp-22]       |
010D590A | 32 C7                 | xor al,bh                         |
010D590C | C7 47 1C 02 00 00 00  | mov dword ptr ds:[edi+1C],2       |
010D5913 | 0F B6 C0              | movzx eax,al                      |
010D5916 | 66 03 C8              | add cx,ax                         |
010D5919 | 0F B7 C1              | movzx eax,cx                      |
010D591C | 50                    | push eax                          |
010D591D | E8 29 2A 33 FF        | call 010editor1.40834B            | ;算法2
010D5922 | 0F B7 C0              | movzx eax,ax                      |
010D5925 | 83 C4 04              | add esp,4                         |
010D5928 | 89 47 20              | mov dword ptr ds:[edi+20],eax     | edi+20:L"χ"
010D592B | 85 C0                 | test eax,eax                      |
010D592D | 0F 84 32 01 00 00     | je 010editor1.10D5A65             |
010D5933 | 3D E8 03 00 00        | cmp eax,3E8                       |
010D5938 | 0F 87 27 01 00 00     | ja 010editor1.10D5A65             |
010D593E | 0F B6 55 E5           | movzx edx,byte ptr ss:[ebp-1B]    |
010D5942 | 0F B6 4D E0           | movzx ecx,byte ptr ss:[ebp-20]    |
010D5946 | 0F B6 C7              | movzx eax,bh                      |
010D5949 | 33 D0                 | xor edx,eax                       |
010D594B | 0F B6 45 E4           | movzx eax,byte ptr ss:[ebp-1C]    |
010D594F | 33 C8                 | xor ecx,eax                       |
010D5951 | C1 E2 08              | shl edx,8                         |
010D5954 | 0F B6 45 E2           | movzx eax,byte ptr ss:[ebp-1E]    |
010D5958 | 03 D1                 | add edx,ecx                       |
010D595A | 0F B6 4D DC           | movzx ecx,byte ptr ss:[ebp-24]    |
010D595E | C1 E2 08              | shl edx,8                         |
010D5961 | 33 C8                 | xor ecx,eax                       |
010D5963 | 03 D1                 | add edx,ecx                       |
010D5965 | 68 27 8C 5B 00        | push 010editor1.5B8C27            |
010D596A | 52                    | push edx                          |
010D596B | E8 7E 4A 33 FF        | call 010editor1.40A3EE            |
010D5970 | 83 C4 08              | add esp,8                         |
010D5973 | 89 45 F0              | mov dword ptr ss:[ebp-10],eax     |
010D5976 | 89 47 34              | mov dword ptr ds:[edi+34],eax     |
010D5979 | 8B F0                 | mov esi,eax                       |
010D597B | 8D 45 EC              | lea eax,dword ptr ss:[ebp-14]     |
010D597E | 50                    | push eax                          |
010D597F | 8D 4F 04              | lea ecx,dword ptr ds:[edi+4]      | edi+4:"若&"
010D5982 | FF 15 D4 7A 6C 02     | call dword ptr ds:[<&public: clas |
010D5988 | FF 77 20              | push dword ptr ds:[edi+20]        | edi+20:L"χ"
010D598B | 33 C0                 | xor eax,eax                       |
010D598D | C7 45 FC 00 00 00 00  | mov dword ptr ss:[ebp-4],0        |
010D5994 | 80 FB FC              | cmp bl,FC                         |
010D5997 | 8D 4D EC              | lea ecx,dword ptr ss:[ebp-14]     |
010D599A | 56                    | push esi                          |
010D599B | 0F 95 C0              | setne al                          |
010D599E | 50                    | push eax                          |
010D599F | FF 15 90 74 6C 02     | call dword ptr ds:[<&public: char |
010D59A5 | 50                    | push eax                          |
010D59A6 | E8 39 D2 32 FF        | call 010editor1.402BE4            | ;算法3.根据用户名计算注册码
010D59AB | 8B D0                 | mov edx,eax                       |
010D59AD | 83 C4 10              | add esp,10                        |
010D59B0 | 38 55 E0              | cmp byte ptr ss:[ebp-20],dl       | ;注册码第三组第一位
010D59B3 | 0F 85 81 00 00 00     | jne 010editor1.10D5A3A            |
010D59B9 | 8B CA                 | mov ecx,edx                       |
010D59BB | C1 E9 08              | shr ecx,8                         |
010D59BE | 3A F9                 | cmp bh,cl                         | ;注册码第三组第二位
010D59C0 | 75 78                 | jne 010editor1.10D5A3A            |
010D59C2 | 8B CA                 | mov ecx,edx                       |
010D59C4 | C1 E9 10              | shr ecx,10                        |
010D59C7 | 38 4D E2              | cmp byte ptr ss:[ebp-1E],cl       | ;注册码第四组第一位
010D59CA | 75 6E                 | jne 010editor1.10D5A3A            |
010D59CC | C1 E8 18              | shr eax,18                        |
010D59CF | 38 45 E3              | cmp byte ptr ss:[ebp-1D],al       | ;注册码第四组第二位
010D59D2 | 75 66                 | jne 010editor1.10D5A3A            |
010D59D4 | 80 FB 9C              | cmp bl,9C                         | ;注册码第二组第二位
010D59D7 | 75 0F                 | jne 010editor1.10D59E8            |
010D59D9 | 8B 45 08              | mov eax,dword ptr ss:[ebp+8]      |
010D59DC | 3B 47 1C              | cmp eax,dword ptr ds:[edi+1C]     |
010D59DF | 76 52                 | jbe 010editor1.10D5A33            | ;必须跳转。


关键断点
捕获1.JPG
成功位置
捕获2.JPG

附一组密码提供测试。
whyida
147C-C89C-8F26-17D4

whyida
66DE-989C-E3F0-0E40
去网络验证,修改hosts文件加入下面一行,目录(Windows\System32\drivers\etc)
127.0.0.1       www.sweetscape.com

免费评分

参与人数 7威望 +2 吾爱币 +15 热心值 +7 收起 理由
NS_8899 + 1 + 1 谢谢@Thanks!
laolong + 1 + 1 热心回复!
Three_fish + 1 + 1 谢谢@Thanks!
Hmily + 2 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dhs347 + 1 + 1 谢谢@Thanks!
a5606495 + 1 + 1 谢谢@Thanks!
冥界3大法王 + 1 牛逼~~支持

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2017-1-28 15:34
whyida 发表于 2017-1-28 14:57
网络验证还没看,但一直联网还没发现问题。可能是有些功能还没仔细研究。

6点几版本我破解的时候遇到过,导入下面注册表应该可以重现,可以试试:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\SweetScape\010 Editor\CLASSES\CLSID\{FA1395FC-83C3-0732-7D11-0134937462A0}]

[HKEY_CURRENT_USER\Software\SweetScape\010 Editor\CLASSES\CLSID\{FA1395FC-83C3-0732-7D11-0134937462A0}\InProcServer32A]
"ThreadingModel"="1690300289"
 楼主| whyida 发表于 2017-1-30 08:16
本帖最后由 whyida 于 2017-1-30 08:52 编辑
dfui 发表于 2017-1-29 23:51
哎,你点   关于  ------- 点 注册  点  检查许可证。
       你点  工具--------  点 注册  点   检查 ...

本来就是逆向算出的用户名,注册码。软件公司的服务器没有相应的用户名肯定不能正常通过检查。
一般对付网络验证的方法是网络验证转本地验证。
修改hosts文件加入下面一行(Windows\System32\drivers\etc)
127.0.0.1       www.sweetscape.com
qwertyui 发表于 2017-1-27 15:17
charonly 发表于 2017-1-27 18:01
感谢分享!有时间学习一下。
冥界3大法王 发表于 2017-1-27 18:55
楼主你跟我一样,也喜欢这么直接贴代码~~
我们的审美都一样,不喜欢黑乎乎的代码版
@whyida
头像被屏蔽
liuhaijiji5807 发表于 2017-1-27 18:59
提示: 作者被禁止或删除 内容自动屏蔽
ChinaFox 发表于 2017-1-27 20:01
楼主 是怎么确定算法的? 怎么看出取第几位呢
 楼主| whyida 发表于 2017-1-27 21:49
冥界3大法王 发表于 2017-1-27 18:55
楼主你跟我一样,也喜欢这么直接贴代码~~
我们的审美都一样,不喜欢黑乎乎的代码版
@whyida

贴代码更清晰直观一些。
 楼主| whyida 发表于 2017-1-27 21:50
ChinaFox 发表于 2017-1-27 20:01
楼主 是怎么确定算法的? 怎么看出取第几位呢

一步一步跟踪。F7 或者F8
 楼主| whyida 发表于 2017-1-27 21:51

谢谢夸奖。
无影黑侠 发表于 2017-1-28 12:41
真的挺厉害,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 14:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表