【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 mark一下,试试先{:1_921:} Alanroar 发表于 2020-11-26 14:18
mark一下,试试先
大佬有时间可以试一试 这个的注册码有点意思的
搞不定前半段
这个东西很不错的,楼主辛苦了 楼主辛苦了 感谢分享,关键时候也能用上的{:1_893:} 干货,先行测试一下。感谢楼主分享!
页:
[1]