billy74 发表于 2020-11-26 14:14

【U盘自动复制工具】追码算法讨论

首先感谢大佬dlweixiu 发表的一个帖子 https://www.52pojie.cn/thread-553308-1-1.html
我自己也是个新手,就下载软件跟视频跟着做了,新版1.71也是可以用这个方法破解的,但是我想深入一下去追码,探究他的算法的时候遇到问题,发上来跟大家讨论一下

这个软件虽然很小,但是很有意思
1.带重启验证 (主要验证位置是C:\Windows\AutoUCopy.ini里的key)
2.注册只验证部分注册码
3.重启验证时验证固定4位置的注册码 算法不同
4.注册码长度固定为12位

所以想一次追出完整注册码很难。
我只解决了重启验证的那4位,补齐12位是可以过重启验证的,但是点击注册按钮时候提示注册码不对
00496CE1|.E8 7A120000   call U盘自动?00497F60                     ;关键CALL
https://attach.52pojie.cn//forum/202011/26/141431t7af0d3l379398o3.png?l

在进去看了下 主要的算法如下:
00403238/$53            push ebx

00403239|.56            push esi                                 ;U盘自动?004473D4

0040323A|.57            push edi

0040323B|.89C6          mov esi,eax

0040323D|.50            push eax

0040323E|.85C0          test eax,eax

00403240|.74 6C         je short U盘自动?004032AE

00403242|.31C0          xor eax,eax

00403244|.31DB          xor ebx,ebx

00403246|.BF CCCCCC0C   mov edi,0xCCCCCCC

0040324B|>8A1E          /mov bl,byte ptr ds:                ;Case 20 (' ') of switch 0040324E

0040324D|.46            |inc esi                                 ;U盘自动?004473D4

0040324E|.80FB 20       |cmp bl,0x20                           ;Switch (cases 20..2D)

00403251|.^ 74 F8         \je short U盘自动?0040324B

00403253|.B5 00         mov ch,0x0

00403255|.80FB 2D       cmp bl,0x2D

00403258|.74 62         je short U盘自动?004032BC

0040325A|.80FB 2B       cmp bl,0x2B

0040325D|.74 5F         je short U盘自动?004032BE

0040325F|>80FB 24       cmp bl,0x24                              ;Switch (cases 0..78)

00403262|.74 5F         je short U盘自动?004032C3

00403264|.80FB 78       cmp bl,0x78

00403267|.74 5A         je short U盘自动?004032C3

00403269|.80FB 58       cmp bl,0x58

0040326C|.74 55         je short U盘自动?004032C3

0040326E|.80FB 30       cmp bl,0x30

00403271|.75 13         jnz short U盘自动?00403286

00403273|.8A1E          mov bl,byte ptr ds:               ;Case 30 ('0') of switch 0040325F

00403275|.46            inc esi                                  ;U盘自动?004473D4

00403276|.80FB 78       cmp bl,0x78

00403279|.74 48         je short U盘自动?004032C3

0040327B|.80FB 58       cmp bl,0x58

0040327E|.74 43         je short U盘自动?004032C3

00403280|.84DB          test bl,bl

00403282|.74 20         je short U盘自动?004032A4

00403284|.EB 04         jmp short U盘自动?0040328A

00403286|>84DB          test bl,bl

00403288|.74 2D         je short U盘自动?004032B7

0040328A|>80EB 30       /sub bl,0x30                           ;Default case of switch 0040325F

0040328D|.80FB 09       |cmp bl,0x9

00403290|.77 25         |ja short U盘自动?004032B7

00403292|.39F8          |cmp eax,edi

00403294|.77 21         |ja short U盘自动?004032B7

00403296|.8D0480      |lea eax,dword ptr ds:

00403299|.01C0          |add eax,eax

0040329B|.01D8          |add eax,ebx

0040329D|.8A1E          |mov bl,byte ptr ds:

0040329F|.46            |inc esi                                 ;U盘自动?004473D4

004032A0|.84DB          |test bl,bl

004032A2|.^ 75 E6         \jnz short U盘自动?0040328A

004032A4|>FECD          dec ch

004032A6|.74 09         je short U盘自动?004032B1

004032A8|.85C0          test eax,eax

004032AA|.7D 54         jge short U盘自动?00403300

004032AC|.EB 09         jmp short U盘自动?004032B7

004032AE|>46            inc esi                                  ;U盘自动?004473D4

004032AF|.EB 06         jmp short U盘自动?004032B7

004032B1|>F7D8          neg eax

004032B3|.7E 4B         jle short U盘自动?00403300

004032B5|.78 49         js short U盘自动?00403300

004032B7|>5B            pop ebx                                  ;U盘自动?00408E1C; Default case of switch 004032D7

004032B8|.29DE          sub esi,ebx

004032BA|.EB 47         jmp short U盘自动?00403303

004032BC|>FEC5          inc ch                                 ;Case 2D ('-') of switch 0040324E

004032BE|>8A1E          mov bl,byte ptr ds:               ;Case 2B ('+') of switch 0040324E

004032C0|.46            inc esi                                  ;U盘自动?004473D4

004032C1|.^ EB 9C         jmp short U盘自动?0040325F

004032C3|>BF FFFFFF0F   mov edi,0xFFFFFFF                        ;Cases 24 ('$'),58 ('X'),78 ('x') of switch 0040325F

004032C8|.8A1E          mov bl,byte ptr ds:

004032CA|.46            inc esi                                  ;U盘自动?004473D4

004032CB|.84DB          test bl,bl

004032CD|.^ 74 DF         je short U盘自动?004032AE

004032CF|>80FB 61       /cmp bl,0x61

004032D2|.72 03         |jb short U盘自动?004032D7

004032D4|.80EB 20       |sub bl,0x20

004032D7|>80EB 30       |sub bl,0x30                           ;Switch (cases 30..46)

004032DA|.80FB 09       |cmp bl,0x9

004032DD|.76 0B         |jbe short U盘自动?004032EA

004032DF|.80EB 11       |sub bl,0x11

004032E2|.80FB 05       |cmp bl,0x5

004032E5|.^ 77 D0         |ja short U盘自动?004032B7

004032E7|.80C3 0A       |add bl,0xA                              ;Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 004032D7

004032EA|>39F8          |cmp eax,edi                           ;Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 004032D7

004032EC|.^ 77 C9         |ja short U盘自动?004032B7

004032EE|.C1E0 04       |shl eax,0x4

004032F1|.01D8          |add eax,ebx

004032F3|.8A1E          |mov bl,byte ptr ds:

004032F5|.46            |inc esi                                 ;U盘自动?004473D4

004032F6|.84DB          |test bl,bl

004032F8|.^ 75 D5         \jnz short U盘自动?004032CF

004032FA|.FECD          dec ch

004032FC|.75 02         jnz short U盘自动?00403300

004032FE|.F7D8          neg eax

00403300|>59            pop ecx                                  ;U盘自动?00408E1C

00403301|.31F6          xor esi,esi                              ;U盘自动?004473D4

00403303|>8932          mov dword ptr ds:,esi               ;U盘自动?004473D4

00403305|.5F            pop edi                                  ;U盘自动?00408E1C

00403306|.5E            pop esi                                  ;U盘自动?00408E1C

00403307|.5B            pop ebx                                  ;U盘自动?00408E1C

00403308\.C3            retn

00403309      8D40 00       lea eax,dword ptr ds:

0040330C/$B9 FF000000   mov ecx,0xFF

00403311|.E8 02000000   call U盘自动?00403318

00403316\.C3            retn



大致的逻辑应该是(我的猜想)
根据机器码以及估计值 套入算法计算出一个变量 然后取值机器码跟这个变量组合 在去套入算法 得到注册时候的部分注册码,重启后在验证剩下的4位,这样就固定下来完整的注册码了。
我说的可能有点复杂。。。。希望大佬可以下载跑跑看看 小白一枚 套入个几次我就晕了 实在是找不到 大家又心得可以一起讨论
原版软件下载:
http://ys-g.ys168.com/608637956/ ... %8E%9F%E7%89%88.exe
备用
https://blz.lanzouj.com/iGrH3isgc2b

Alanroar 发表于 2020-11-26 14:18

mark一下,试试先{:1_921:}

billy74 发表于 2020-11-26 14:32

Alanroar 发表于 2020-11-26 14:18
mark一下,试试先

大佬有时间可以试一试 这个的注册码有点意思的
搞不定前半段

吾名张 发表于 2020-11-26 14:57


这个东西很不错的,楼主辛苦了

myh17909 发表于 2020-11-26 15:11

楼主辛苦了

半夜睡不着 发表于 2020-11-26 15:37

感谢分享,关键时候也能用上的{:1_893:}

djqiuzhe 发表于 2021-1-12 11:39

干货,先行测试一下。感谢楼主分享!
页: [1]
查看完整版本: 【U盘自动复制工具】追码算法讨论