吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4218|回复: 23

[原创逆向图文] 生辰八字五行宝宝起名软件 V23.6 算法分析

[复制链接]
星空之上 发表于 2017-1-17 14:35 | 显示全部楼层 |阅读模式

在某论坛发过,在这里也发一下, 本帖适合初学算法的同学,大牛请飘过。

1.png

该软件是一个易语言软件,所以直接下易语言按钮事件断下,找关键的算法call

[Asm] 纯文本查看 复制代码
004A802A /.  55            push ebp                                 ;  注册算法
004A802B |.  8BEC          mov ebp,esp
004A802D |.  81EC 34000000 sub esp,0x34
004A8033 |.  C745 FC 00000>mov[local.1],0x0
004A803A |.  C745 F8 00000>mov[local.2],0x0
004A8041 |.  C745 F4 00000>mov[local.3],0x0
004A8048 |.  6A 01         push 0x1
004A804A |.  B8 ED6F6D00   mov eax,生辰八字.006D6FED                    ;  wenyuhao
004A804F |.  8945 F0       mov [local.4],eax
004A8052 |.  8D45 F0       lea eax,[local.4]
004A8055 |.  50            push eax
004A8056 |.  68 D0C38A00   push 生辰八字.008AC3D0                       ; 8}Z\t
004A805B |.  68 84C48A00   push 生辰八字.008AC484


上面这段就是算法的开始,我们一步一步分析,因为这个算法比较简单,适合新手去学习练手!!

[Asm] 纯文本查看 复制代码
004A812C |.  83C4 04       add esp,0x4
004A812F |>  58            pop eax
004A8130 |.  8945 FC       mov [local.1],eax
004A8133 |.  6A FF         push -0x1
004A8135 |.  6A 08         push 0x8
004A8137 |.  68 0F940216   push 0x1602940F
004A813C |.  68 27540152   push 0x52015427
004A8141 |.  E8 82E40800   call 生辰八字.005365C8                       ;  获取我输入的假码
004A8146 |.  83C4 10       add esp,0x10
004A8149 |.  8945 F0       mov [local.4],eax
004A814C |.  68 04000080   push 0x80000004
004A8151 |.  6A 00         push 0x0
004A8153 |.  8B45 F0       mov eax,[local.4]
004A8156 |.  85C0          test eax,eax
004A8158 |.  75 05         jnz short 生辰八字.004A815F



2.png

[Asm] 纯文本查看 复制代码
004A8182 |.  83C4 04       add esp,0x4
004A8185 |>  68 45C26300   push 生辰八字.0063C245                       ;  '
004A818A |.  FF75 EC       push [local.5]
004A818D |.  68 3BDB6E00   push 生辰八字.006EDB3B                       ;  pass='
004A8192 |.  B9 03000000   mov ecx,0x3
004A8197 |.  E8 B292F5FF   call 生辰八字.0040144E
004A819C |.  83C4 0C       add esp,0xC
004A819F |.  8945 E8       mov [local.6],eax
004A81A2 |.  8B5D EC       mov ebx,[local.5]
004A81A5 |.  85DB          test ebx,ebx


“Pass=”和假码合并

pass='123456789'

然后一直下去会进行一些没关紧要的操作,这些可以忽略不理。

[Asm] 纯文本查看 复制代码
004A8234 |.  83C4 04       add esp,0x4
004A8237 |>  58            pop eax
004A8238 |.  8945 F8       mov [local.2],eax
004A823B |.  6A FF         push -0x1
004A823D |.  6A 08         push 0x8
004A823F |.  68 0F940216   push 0x1602940F
004A8244 |.  68 27540152   push 0x52015427
004A8249 |.  E8 7AE30800   call 生辰八字.005365C8    继续取出假码
004A824E |.  83C4 10       add esp,0x10
004A8251 |.  8945 F0       mov [local.4],eax
004A8254 |.  68 04000080   push 0x80000004
004A8259 |.  6A 00         push 0x0
004A825B |.  8B45 F0       mov eax,[local.4]
004A825E |.  85C0          test eax,eax
004A8260 |.  75 05         jnz short 生辰八字.004A8267

------------------------------------------------------------------------------------------------------------------------------------------------------

[Asm] 纯文本查看 复制代码
004A828A |.  83C4 04       add esp,0x4
004A828D |>  68 45C26300   push 生辰八字.0063C245                       ;  '
004A8292 |.  FF75 EC       push [local.5]
004A8295 |.  68 3BDB6E00   push 生辰八字.006EDB3B                       ;  pass='
004A829A |.  B9 03000000   mov ecx,0x3
004A829F |.  E8 AA91F5FF   call 生辰八字.0040144E
004A82A4 |.  83C4 0C       add esp,0xC
004A82A7 |.  8945 E8       mov [local.6],eax
004A82AA |.  8B5D EC       mov ebx,[local.5]
004A82AD |.  85DB          test ebx,ebx
继续“Pass=”和假码合并
pass='123456789'

------------------------------------------------------------------------------------------------------------------------------------------------------

[Asm] 纯文本查看 复制代码
004A833C |.  83C4 04       add esp,0x4
004A833F |>  58            pop eax
004A8340 |.  8945 F4       mov [local.3],eax
004A8343 |.  68 04000080   push 0x80000004
004A8348 |.  6A 00         push 0x0
004A834A |.  A1 D4C38A00   mov eax,dword ptr ds:[0x8AC3D4]          ; 机器码序列号,请记下这个全局变量[0x8AC3D4] 
004A834F |.  85C0          test eax,eax


我这里的机器码为:2018682084


3.png

[Asm] 纯文本查看 复制代码
004A8368 |.  83C4 10       add esp,0x10
004A836B |.  8945 E4       mov [local.7],eax
004A836E |.  8955 E8       mov [local.6],edx
004A8371 |.  DF6D E4       fild qword ptr ss:[ebp-0x1C]
004A8374 |.  DD5D E4       fstp qword ptr ss:[ebp-0x1C]
004A8377 |.  DD45 E4       fld qword ptr ss:[ebp-0x1C]
004A837A |.  DC0D 09C46300 fmul qword ptrds:[0x63C409]             ;  机器码×323    注意这里的操作都是以10进制操作
004A8380 |.  DD5D DC       fstp qword ptr ss:[ebp-0x24]
004A8383 |.  68 01060080   push 0x80000601
004A8388 |.  FF75 E0       push [local.8]
004A838B |.  FF75 DC       push [local.9]
004A838E  |.  6801000000   push 0x1
004A8393 |.  BB 907A5300   mov ebx,生辰八字.00537A90

4.png

这里就是机器码*323
2018682084*323= hex (D0460BAC)


5.png
[Asm] 纯文本查看 复制代码
004A839D |.  83C4 10       add esp,0x10
004A83A0 |.  68 01030080   push 0x80000301
004A83A5 |.  6A 00         push 0x0
004A83A7 |.  50            push eax
004A83A8 |.  68 01000000   push 0x1
004A83AD |.  BB E08C5300   mov ebx,生辰八字.00538CE0
004A83B2 |.  E8 F9E10800   call 生辰八字.005365B0                       ;  将结果转换为10进制
004A83B7 |.  83C4 10       add esp,0x10
004A83BA |.  8945 D4       mov [local.11],eax





6.png
经典的易语言文本比较

[Asm] 纯文本查看 复制代码
004A83D0 |.  83C4 10       add esp,0x10
004A83D3 |.  8945 D0       mov [local.12],eax
004A83D6 |.  8B45 D4       mov eax,[local.11]
004A83D9 |.  50            push eax
004A83DA |.  FF75 D0       push [local.12]
004A83DD |.  E8 648FF5FF   call 生辰八字.00401346
004A83E2 |.  83C4 08       add esp,0x8
004A83E5 |.  83F8 00       cmp eax,0x0
004A83E8 |.  B8 00000000   mov eax,0x0
004A83ED |.  0F94C0        sete al
004A83F0 |.  8945 CC       mov [local.13],eax
004A83F3 |.  8B5D D0       mov ebx,[local.12]
004A83F6 |.  85DB          test ebx,ebx



7.png
爆破的话修改下面跳转就可以了,我们现在是学算法分析,所以我们不玩爆破。

总结:注册码=机器码* 323



8.png

知道了注册码怎么计算出来的,现在我们来找出机器码的算法。

刚才叫大家记下这个全局变量[0x8AC3D4]

现在我们搜索这个常量


9.png

全部都下上断点

[Asm] 纯文本查看 复制代码
00401F16  .  5E            pop esi                                  ;  057ACA30
00401F17  .  8BF8          mov edi,eax
00401F19  .  F3:A4         rep movs byte ptr es:[edi],byte ptrds:[>
00401F1B  >  50            push eax
00401F1C  .  8B1D D4C38A00 mov ebx,dword ptrds:[0x8AC3D4]
00401F22  .  85DB          test ebx,ebx
00401F24  .  74 09         je short 生辰八字.00401F2F
00401F26  .  53            push ebx
00401F27  .  E8 7E461300   call 生辰八字.005365AA
00401F2C  .  83C4 04       add esp,0x4


我们发现在这里断下,这时候,eax已经出现了机器码,我们往上找,看看机器码怎么计算出来的。


[Asm] 纯文本查看 复制代码
00401DDD  .  6A 00         push 0x0
00401DDF  .  6A 00         push 0x0
00401DE1  .  6A 00         push 0x0
00401DE3  .  68 07000700   push 0x70007
00401DE8  .  6A 00         push 0x0
00401DEA  .  FF35 CCC38A00 push dword ptrds:[0x8AC3CC]
00401DF0  .  68 02000000   push 0x2
00401DF5  .  B8 06000000   mov eax,0x6
00401DFA  .  BB 60965C00   mov ebx,生辰八字.005C9660
00401DFF  .  E8 B8471300   call 生辰八字.005365BC
00401E04  .  83C4 1C       add esp,0x1C
00401E07  . 8B1D CCC38A00 mov ebx,dword ptr ds:[0x8AC3CC]
00401E0D  .  83C3 08       add ebx,0x8
00401E10  .  895D FC       mov dword ptr ss:[ebp-0x4],ebx
00401E13  .  68 04000080   push 0x80000004
00401E18  .  6A 00         push 0x0
00401E1A  .  8B5D FC       mov ebx,dword ptr ss:[ebp-0x4]
00401E1D  .  8B03          mov eax,dword ptr ds:[ebx]
00401E1F  .  85C0          test eax,eax
00401E21  .  75 05         jnz short 生辰八字.00401E28
00401E23  .  B8 44C26300   mov eax,生辰八字.0063C244
00401E28  >  50            push eax
00401E29  .  68 01000000   push 0x1
00401E2E  .  BB 10845300   mov ebx,生辰八字.00538410


这里是取硬盘序列号

我这里是  S248NXAH110569Z

[Asm] 纯文本查看 复制代码
00401E51  > \50            push eax
00401E52  .  68 01000000   push 0x1
00401E57  .  B8 0E000000   mov eax,0xE
00401E5C  .  BB 20E65D00   mov ebx,生辰八字.005DE620
00401E61  .  E8 56471300   call 生辰八字.005365BC
00401E66  .  83C4 10       add esp,0x10
00401E69  .  8945 F4       mov dword ptr ss:[ebp-0xC],eax
00401E6C  .  8B5D F8       mov ebx,dword ptr ss:[ebp-0x8]
00401E6F  .  85DB          test ebx,ebx                             ;  生辰八字.005DE620


将硬盘序列号进行MD5操作  


10.png

[Asm] 纯文本查看 复制代码
00401E93  > \58            pop eax
00401E94  .  A3 D0C38A00   mov dword ptr ds:[0x8AC3D0],eax
00401E99  .  68 00000000   push 0x0
00401E9E  .  BB F0CC5300   mov ebx,生辰八字.0053CCF0
00401EA3  .  E8 08471300   call 生辰八字.005365B0
00401EA8  .  83C4 04       add esp,0x4
00401EAB  .  8945 F4       mov dword ptr ss:[ebp-0xC],eax
00401EAE  .  DB45 F4       fild dword ptr ss:[ebp-0xC]
00401EB1  .  DD5D F4       fstp qword ptr ss:[ebp-0xC]
00401EB4  .  DD45 F4       fld qword ptr ss:[ebp-0xC]
00401EB7  .  DC05 F2C36300 fadd qword ptrds:[0x63C3F2]
00401EBD  .  DD5D EC       fstp qword ptr ss:[ebp-0x14]
00401EC0  .  68 01060080   push 0x80000601
00401EC5  .  FF75 F0       push dword ptr ss:[ebp-0x10]
00401EC8  .  FF75 EC       push dword ptr ss:[ebp-0x14]             ; 生辰八字.008B8680
00401ECB  .  68 01000000   push 0x1
00401ED0  .  BB E08C5300   mov ebx,生辰八字.00538CE0


这段其实就是易语言的取硬盘特征字命令,我在这里浪费了不少时间才得知是这个命令

00401EA3  .  E8 08471300   call 生辰八字.005365B0   F7进入


11.png
百度了一下上图圈出的关键字,得出是取硬盘信息相关的命令。
12.png

上图这段就是进行各种硬盘信息操作,得出最后的取硬盘特征字


13.png

把硬盘模型号的ASCII进行相加


14.png

拿出硬盘版本  EMT41B6Q  进行ASCII相加

其他几个就不一一说了,都是拿下面这些信息进行运算。

硬盘模型号   Samsung SSD 850 EVO mSATA250GB
版本   EMT41B6Q
硬盘序列号   S248NXAH110569Z
磁头数   16
柱面数   266305
容量   131071
缓存大小   0
每磁道扇区数   63
第一硬盘特征字是:1079414944


15.png

最后得出第一硬盘特征字是:1079414944


16.png

然后将盘特征字和3086910975进行相加操作,最后就得出机器码。


QQ截图20170117141549.png


附上软件和Keygen :http://pan.baidu.com/s/1hsDkswG 密码:8kkn



点评

cqr2287”点评说:
这软件算法很简单,在总结算法过程中也没什么逻辑。主要在循环指针那。技术上不提问题了,很好。提点教程上的。在那一句中,应该有图,把所涉及到的指针都打出来。这样最好。谢谢  发表于 2017-1-17 14:53

评分

参与人数 17威望 +1 HB +51 THX +7 收起 理由
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
我是我是一体 + 1
青光眼 + 1
sjtkxy + 1 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 2
冷亦飞 + 1
三月十六 + 1
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
禽大师 + 1
叶落花开 + 2
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
wfq21952 + 1 + 1 [快捷评语] - 2017,让我们17学破解!
waningmoon + 1 + 1 [快捷评语] - 分享精神,是最值得尊敬的!
孺子夜 + 1 + 1 [快捷评语] - 2017,让我们17学破解!
Shark恒 + 1 + 30 + 1 [快捷评语] - 2017,让我们17学破解!
cqr2287 + 5 + 1 见点评

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
cqr2287 发表于 2017-1-17 14:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
cqr2287 发表于 2017-1-17 14:59 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Shark恒 发表于 2017-1-17 15:01 | 显示全部楼层

cqr2287 发表于 2017-1-17 14:51
刚来到论坛,想不到这里也有算法分析!幸会!
详情见点评。其实分析机器码产生没必要

不分析机器码怎么计算的,如何得出准确的注册码?难道要手动获取常量内容,然后在Keygen中手动输入常量内容么。。。

点评

cqr2287”点评说:
额,我注册机都是让别人手动输入机器码。机器码软件提供 客户们复制下就好了  发表于 2017-1-17 15:10
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一缃青阳 发表于 2017-1-17 15:42 | 显示全部楼层

我感觉这个软件也不是那么有用吧,这个跟互联网取名字有什么区别吗?
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 星空之上 发表于 2017-1-17 15:56 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
三千亿少女的梦 发表于 2017-1-20 13:06 | 显示全部楼层

写了一个内存注册机 顺便膜拜一下星空狗管理 内存注册机.zip (2.61 MB, 下载次数: 2)
教程.gif
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 星空之上 发表于 2017-1-22 17:00 | 显示全部楼层

三千亿少女的梦 发表于 2017-1-20 13:06
写了一个内存注册机 顺便膜拜一下星空狗管理

内存注册有什么用  还不如直接写成keygen  膜拜管理弄权
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
屌丝范儿 发表于 2017-1-29 11:08 | 显示全部楼层

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

思路太清晰了,还有注册机不错。谢谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!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

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