吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3099|回复: 12

我可能进了一个假的算法call

[复制链接]
夏洛魂 发表于 2017-7-22 21:44 | 显示全部楼层 |阅读模式

本站严厉禁止求脱求破行为(包含无自我分析直接求思路),如发现此类求助主题请点击“举报”,让我们共同维护优质的学习环境!


100HB
这年头,软件作者越来越能了。。。。。。。。。。。。。。。。。。。。。。。。。。。。
后来不想玩爆破了,,,,,,,一直分析软件的真码咋算出来的,今天碰到一个,。。。。。可能进了一个假的算法call

先来看下软件的界面,,
3.png
软件无壳,,Delphi程序
首先拖入OD,下好按钮事件,输入用户名和假码,,会断在按钮事件的call中,
我们点进去, 1.png
看到有两个jnz,,这是判断用户名和假码是否为空,为空的话就跳走了
我们进去这个关键call

这里我把关键call的代码复制了出来


006A96D4  /$  55            push ebp
006A96D5  |.  8BEC          mov ebp,esp
006A96D7  |.  83C4 E8       add esp,-0x18
006A96DA  |.  53            push ebx
006A96DB  |.  56            push esi
006A96DC  |.  33D2          xor edx,edx
006A96DE  |.  8955 E8       mov [local.6],edx
006A96E1  |.  8955 EC       mov [local.5],edx
006A96E4  |.  8955 FC       mov [local.1],edx
006A96E7  |.  8945 F8       mov [local.2],eax
006A96EA  |.  33C0          xor eax,eax
006A96EC  |.  55            push ebp
006A96ED  |.  68 F0976A00   push Converte.006A97F0
006A96F2  |.  64:FF30       push dword ptr fs:[eax]
006A96F5  |.  64:8920       mov dword ptr fs:[eax],esp
006A96F8  |.  33DB          xor ebx,ebx
006A96FA  |.  8D55 FC       lea edx,[local.1]
006A96FD  |.  8B45 F8       mov eax,[local.2]
006A9700  |.  8B80 94030000 mov eax,dword ptr ds:[eax+0x394]
006A9706  |.  E8 990AEEFF   call Converte.0058A1A4
006A970B  |.  8B45 FC       mov eax,[local.1]
006A970E  |.  85C0          test eax,eax
006A9710  |.  74 16         je short Converte.006A9728
006A9712  |.  8BD0          mov edx,eax
006A9714  |.  83EA 0A       sub edx,0xA
006A9717  |.  66:833A 02    cmp word ptr ds:[edx],0x2
006A971B  |.  74 0B         je short Converte.006A9728
006A971D  |.  8D45 FC       lea eax,[local.1]
006A9720  |.  8B55 FC       mov edx,[local.1]
006A9723  |.  E8 64CDD5FF   call Converte.0040648C
006A9728  |>  85C0          test eax,eax
006A972A  |.  74 05         je short Converte.006A9731
006A972C  |.  83E8 04       sub eax,0x4
006A972F  |.  8B00          mov eax,dword ptr ds:[eax]               ;  Converte.006A8CF0
006A9731  |>  8BF0          mov esi,eax
006A9733  |.  85F6          test esi,esi
006A9735  |.  7E 37         jle short Converte.006A976E
006A9737  |.  C745 F0 01000>mov [local.4],0x1
006A973E  |>  8D45 EC       /lea eax,[local.5]
006A9741  |.  50            |push eax
006A9742  |.  B9 01000000   |mov ecx,0x1                             ;  ecx赋值为1
006A9747  |.  8B55 F0       |mov edx,[local.4]
006A974A  |.  8B45 FC       |mov eax,[local.1]                       ;  用户名给eax
006A974D  |.  E8 EEE1D5FF   |call Converte.00407940
006A9752  |.  8B45 EC       |mov eax,[local.5]                       ;  用户名第一位给eax
006A9755  |.  E8 32DBD5FF   |call Converte.0040728C
006A975A  |.  0FB700        |movzx eax,word ptr ds:[eax]
006A975D  |.  0FB7C0        |movzx eax,ax
006A9760  |.  03D8          |add ebx,eax                             ;  ebx加上eax后的值放到ebx中
006A9762  |.  81F3 05FA0B00 |xor ebx,0xBFA05                         ;  ebx与0xBFA05异或
006A9768  |.  FF45 F0       |inc [local.4]
006A976B  |.  4E            |dec esi
006A976C  |.^ 75 D0         \jnz short Converte.006A973E             ;  这个循环就是将用户名第一位与0x8FA05进行异或,结果加上用户名第二位再与ox8FA05进行异或,这样循环下去一直到用户名最后一位,循环后ebx的值为 8F9CA
006A976E  |>  A1 D8397600   mov eax,dword ptr ds:[0x7639D8]          ;  将0x7639D8里面的4字节内容,也就是0030FE6D给eax
006A9773  |.  8BD0          mov edx,eax                              ;  将eax的值给edx
006A9775  |.  C1E0 04       shl eax,0x4                              ;  eax的值左移4位
006A9778  |.  03C2          add eax,edx                              ;  eax的值加上 edx
006A977A  |.  03D8          add ebx,eax                              ;  ebx(就是刚才那个循环后的值),加上eax(就是0030FE6D左移4位后的值加上本身)
006A977C  |.  81C3 D4A31300 add ebx,0x13A3D4                         ;  ebx再加上 0x13A3D4
006A9782  |.  81F3 8DED5900 xor ebx,0x59ED8D                         ;  ebx的值与0x59ED8D异或   03396F56
006A9788  |.  8D55 E8       lea edx,[local.6]
006A978B  |.  8B45 F8       mov eax,[local.2]
006A978E  |.  8B80 98030000 mov eax,dword ptr ds:[eax+0x398]
006A9794  |.  E8 0B0AEEFF   call Converte.0058A1A4
006A9799  |.  8B45 E8       mov eax,[local.6]                        ;  假码给eax
006A979C  |.  E8 BFB1D6FF   call Converte.00414960                   ;  假码计算call
006A97A1  |.  8BF3          mov esi,ebx                              ;  ebx的值给esi   03396F56
006A97A3  |.  81F6 2473C400 xor esi,0xC47324                         ;  esi与 0xC47324 进行异或运算  03FD1C72
006A97A9  |.  3BC6          cmp eax,esi                                  这个地方就是比较用户名计算出来的结果和注册码计算出来的结果是否相等
006A97AB  |.  75 19         jnz short Converte.006A97C6
006A97AD  |.  C645 F7 01    mov byte ptr ss:[ebp-0x9],0x1
006A97B1  |.  B8 D0397600   mov eax,Converte.007639D0
006A97B6  |.  8B55 FC       mov edx,[local.1]
006A97B9  |.  E8 42DAD5FF   call Converte.00407200
006A97BE  |.  8935 D4397600 mov dword ptr ds:[0x7639D4],esi
006A97C4  |.  EB 04         jmp short Converte.006A97CA
006A97C6  |>  C645 F7 00    mov byte ptr ss:[ebp-0x9],0x0
006A97CA  |>  33C0          xor eax,eax
006A97CC  |.  5A            pop edx                                  ;  Converte.006A936B
006A97CD  |.  59            pop ecx                                  ;  Converte.006A936B
006A97CE  |.  59            pop ecx                                  ;  Converte.006A936B
006A97CF  |.  64:8910       mov dword ptr fs:[eax],edx
006A97D2  |.  68 F7976A00   push Converte.006A97F7
006A97D7  |>  8D45 E8       lea eax,[local.6]
006A97DA  |.  E8 11DAD5FF   call Converte.004071F0
006A97DF  |.  8D45 EC       lea eax,[local.5]
006A97E2  |.  E8 09DAD5FF   call Converte.004071F0
006A97E7  |.  8D45 FC       lea eax,[local.1]
006A97EA  |.  E8 01DAD5FF   call Converte.004071F0
006A97EF  \.  C3            retn


上面先来了一个  用户名计算
总结下就是:
将用户名第一位与0x8FA05进行异或,结果加上用户名第二位再与ox8FA05进行异或,这样循环下去一直到用户名最后一位,相对应于xialuohun这个用户名对应的结果为 8F9CA
8F9CA再加上(0030FE6D左移4位后的值加上本身),结果再加上0x13A3D4,结果与0x59ED8D异或,结果为03396F56

现在进去那个假码计算call(我上面有写)
2.png
看到了吗,第一个call进去就是假码计算部分了
这里我把代码也复制了出来

00404A04  /$  53            push ebx
00404A05  |.  56            push esi
00404A06  |.  57            push edi
00404A07  |.  89C6          mov esi,eax
00404A09  |.  50            push eax
00404A0A  |.  85C0          test eax,eax
00404A0C  |.  0F84 83000000 je Converte.00404A95
00404A12  |.  31C0          xor eax,eax                              ;  清空eax
00404A14  |.  31DB          xor ebx,ebx                              ;  清空ebx
00404A16  |.  BF CCCCCC0C   mov edi,0xCCCCCCC                        ;  edi赋值为 0xCCCCCCC
00404A1B  |>  66:8B1E       /mov bx,word ptr ds:[esi]                ;  假码第一位给bx
00404A1E  |.  83C6 02       |add esi,0x2
00404A21  |.  66:83FB 20    |cmp bx,0x20
00404A25  |.^ 74 F4         \je short Converte.00404A1B
00404A27  |.  B5 00         mov ch,0x0
00404A29  |.  66:83FB 2D    cmp bx,0x2D
00404A2D  |.  74 76         je short Converte.00404AA5
00404A2F  |.  66:83FB 2B    cmp bx,0x2B
00404A33  |.  74 72         je short Converte.00404AA7
00404A35  |>  66:83FB 24    cmp bx,0x24
00404A39  |.  74 74         je short Converte.00404AAF
00404A3B  |.  66:83FB 78    cmp bx,0x78
00404A3F  |.  74 6E         je short Converte.00404AAF
00404A41  |.  66:83FB 58    cmp bx,0x58
00404A45  |.  74 68         je short Converte.00404AAF
00404A47  |.  66:83FB 30    cmp bx,0x30
00404A4B  |.  75 19         jnz short Converte.00404A66
00404A4D  |.  66:8B1E       mov bx,word ptr ds:[esi]
00404A50  |.  83C6 02       add esi,0x2
00404A53  |.  66:83FB 78    cmp bx,0x78
00404A57  |.  74 56         je short Converte.00404AAF
00404A59  |.  66:83FB 58    cmp bx,0x58
00404A5D  |.  74 50         je short Converte.00404AAF
00404A5F  |.  66:85DB       test bx,bx
00404A62  |.  74 27         je short Converte.00404A8B
00404A64  |.  EB 05         jmp short Converte.00404A6B
00404A66  |>  66:85DB       test bx,bx
00404A69  |.  74 35         je short Converte.00404AA0
00404A6B  |>  66:83EB 30    /sub bx,0x30
00404A6F  |.  66:83FB 09    |cmp bx,0x9
00404A73  |.  77 2B         |ja short Converte.00404AA0
00404A75  |.  39F8          |cmp eax,edi
00404A77  |.  77 27         |ja short Converte.00404AA0
00404A79  |.  8D0480        |lea eax,dword ptr ds:[eax+eax*4]
00404A7C  |.  01C0          |add eax,eax
00404A7E  |.  01D8          |add eax,ebx
00404A80  |.  66:8B1E       |mov bx,word ptr ds:[esi]
00404A83  |.  83C6 02       |add esi,0x2
00404A86  |.  66:85DB       |test bx,bx
00404A89  |.^ 75 E0         \jnz short Converte.00404A6B
00404A8B  |>  FECD          dec ch
00404A8D  |.  74 0B         je short Converte.00404A9A
00404A8F  |.  85C0          test eax,eax
00404A91  |.  7D 68         jge short Converte.00404AFB
00404A93  |.  EB 0B         jmp short Converte.00404AA0
00404A95  |>  83C6 02       add esi,0x2
00404A98  |.  EB 06         jmp short Converte.00404AA0
00404A9A  |>  F7D8          neg eax
00404A9C  |.  7E 5D         jle short Converte.00404AFB
00404A9E  |.  78 5B         js short Converte.00404AFB
00404AA0  |>  5B            pop ebx                                  ;  Converte.006A936B
00404AA1  |.  29DE          sub esi,ebx
00404AA3  |.  EB 59         jmp short Converte.00404AFE
00404AA5  |>  FEC5          inc ch
00404AA7  |>  66:8B1E       mov bx,word ptr ds:[esi]
00404AAA  |.  83C6 02       add esi,0x2
00404AAD  |.^ EB 86         jmp short Converte.00404A35
00404AAF  |>  BF FFFFFF0F   mov edi,0xFFFFFFF                        ;  edi赋值为 0xFFFFFFF
00404AB4  |.  66:8B1E       mov bx,word ptr ds:[esi]
00404AB7  |.  83C6 02       add esi,0x2
00404ABA  |.  66:85DB       test bx,bx
00404ABD  |.^ 74 D6         je short Converte.00404A95
00404ABF  |>  66:83FB 61    /cmp bx,0x61
00404AC3  |.  72 04         |jb short Converte.00404AC9
00404AC5  |.  66:83EB 20    |sub bx,0x20
00404AC9  |>  66:83EB 30    |sub bx,0x30                             ;  假码第二位减去30
00404ACD  |.  66:83FB 09    |cmp bx,0x9
00404AD1  |.  76 0E         |jbe short Converte.00404AE1
00404AD3  |.  66:83EB 11    |sub bx,0x11
00404AD7  |.  66:83FB 05    |cmp bx,0x5
00404ADB  |.^ 77 C3         |ja short Converte.00404AA0
00404ADD  |.  66:83C3 0A    |add bx,0xA                              ;  bx加上A
00404AE1  |>  39F8          |cmp eax,edi
00404AE3  |.^ 77 BB         |ja short Converte.00404AA0
00404AE5  |.  C1E0 04       |shl eax,0x4                             ;  eax左移4位
00404AE8  |.  01D8          |add eax,ebx                             ;  eax加上ebx
00404AEA  |.  66:8B1E       |mov bx,word ptr ds:[esi]
00404AED  |.  83C6 02       |add esi,0x2
00404AF0  |.  66:85DB       |test bx,bx
00404AF3  |.^ 75 CA         \jnz short Converte.00404ABF             ;  eax就是假码数字
00404AF5  |.  FECD          dec ch
00404AF7  |.  75 02         jnz short Converte.00404AFB
00404AF9  |.  F7D8          neg eax
00404AFB  |>  59            pop ecx                                  ;  假码给ecx
00404AFC  |.  31F6          xor esi,esi                              ;  清空esi
00404AFE  |>  D1EE          shr esi,1
00404B00  |.  8932          mov dword ptr ds:[edx],esi
00404B02  |.  5F            pop edi                                  ;  Converte.006A936B
00404B03  |.  5E            pop esi                                  ;  Converte.006A936B
00404B04  |.  5B            pop ebx                                  ;  Converte.006A936B
00404B05  \.  C3            retn

总结下假码计算就是

假码第一位如果是x或X 那最后的值就是假码x或X后的内容,
假码和61进行比较 小于的话减去30 结果和9进行比较 小于等于的话就去和 edi(0FFFFFFF)进行比较
                                                                           大于的话就再减去11,结果和5进行比较  大于就死
简单说下就是 假如假码是x666666   那最后和用户名计算出来的结果进行比较的就是666666

这里我贴出来一个1符合这个算法的用户名和假码
用户名 xialuohun
假码  x03FD1C72
4.png
但是很奇怪,提示成功了,但界面居然还是未注册。。。。。。。。。。。。。。。。
可能进了一个假的算法call

软件链接 :链接:http://pan.baidu.com/s/1eSaOFgY 密码:fr8p

来个大佬,帮我分析下,@Shark恒

评分

参与人数 1HB +1 收起 理由
禽大师 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-7-22 21:44 | 显示全部楼层

最佳答案本应属于楼主私有,因此限制查看

您还有0次查看次数,点此查看答案

点此购买查看次数
也可以兑换VIP特权或加入解密专家,每日可免费查看5次最佳答案!

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
上帝也撸管儿 发表于 2017-7-23 10:37 | 显示全部楼层

我在其他两个论坛见过两个人讨论过这个软件,大概意思是把那个限制给爆破了(有这个特征码的,你可以搜一下),把那个未注册弹窗给Nop了最后表标题那里给跳过去了,看着跟已注册般差不多的。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 夏洛魂 发表于 2017-7-23 10:45 | 显示全部楼层

上帝也撸管儿 发表于 2017-7-23 10:37
我在其他两个论坛见过两个人讨论过这个软件,大概意思是把那个限制给爆破了(有这个特征码的,你可以搜一下 ...

爆破的话,我感觉没难度。。。
现在想要知道 为啥用户名和注册码都满足他的要求了,并且已经提示成功了。。
但软件居然没有注册,,想知道哪里还有验证
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
上帝也撸管儿 发表于 2017-7-23 10:59 | 显示全部楼层

这个我也不懂,估计跟楼上haier8917大牛说的一样吧,是个假软件吧
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 夏洛魂 发表于 2017-7-23 11:38 | 显示全部楼层

上帝也撸管儿 发表于 2017-7-23 10:59
这个我也不懂,估计跟楼上haier8917大牛说的一样吧,是个假软件吧

不会的,我在共享软件那里找的
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LYQingYe 发表于 2017-7-23 21:51 | 显示全部楼层

估计重启验证,注册成功后没把注册码 写入到注册表,我遇到过类似的,
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 夏洛魂 发表于 2017-7-23 21:53 | 显示全部楼层

LYQingYe 发表于 2017-7-23 21:51
估计重启验证,注册成功后没把注册码 写入到注册表,我遇到过类似的,

我在虚拟机和物理机都试过,居然都是提示成功,但是界面还是未注册
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ladybe 发表于 2017-7-24 16:50 | 显示全部楼层

不懂帮顶 来学习学习
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
haier8917 发表于 2017-7-24 17:55 | 显示全部楼层

夏洛魂 发表于 2017-7-23 11:38
不会的,我在共享软件那里找的

共享软件里也会有DEMO版程序的哦,你可以试试爆破功能,看看程序是否为正常的完整版
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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