所在位置: 首页 > 取名大全宝宝起名论坛,生辰八字五行免费测试
宝宝起名论坛,生辰八字五行免费测试

  因为看到论坛有人需要这个软件的算法分析,所以无聊就写下这篇文章和大家一起交流学习,这篇算法分析比较适合新手学习,因为算法比较简单。

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

  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

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

  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

  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

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

  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

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

  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

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

  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

  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

  这里就是机器码*323

2018682084*323= hex (D0460BAC)

  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

  经典的易语言文本比较

  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

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

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

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

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

  现在我们搜索这个常量

  全部都下上断点

  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已经出现了机器码,我们往上找,看看机器码怎么计算出来的。

  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

  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操作  

  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进入

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

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

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

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

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

  硬盘模型号   Samsung SSD 850 EVO mSATA250GB

  版本   EMT41B6Q

  硬盘序列号   S248NXAH110569Z

  磁头数   16

  柱面数   266305

  容量   131071

  缓存大小   0

  每磁道扇区数   63

  第一硬盘特征字是:1079414944

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

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

附上软件和KeyGen链接:密码:NYXK9I)

  --官方论坛

  --推荐给朋友

  公众微信号:吾爱破解论坛

  或搜微信号:pojie_52

 

全站推荐
起名网功能大全
网站首页】【回到顶部】【若水起名网】
www.hniuzsjy.cn 若水起名网 版权所有