轻松换背景(Recomposit) 1.8
万能断点一下就断下来:
alt+F9和ctrl+F9几次就到了这里:
00434BE6 . E8 C50D0000 call 004359B0 ; 直接进入算法。
00434BEB . 85C0 test eax, eax
00434BED . 0F84 EE000000 je 00434CE1 ; 关键比较
00434BF3 . 57 push edi
00434BF4 . 8B3E mov edi, dword ptr [esi] ; 下面这些作者到底在干什么呢,
00434BF6 . 83C9 FF or ecx, FFFFFFFF ; 有兴趣的兄弟慢慢研究下
00434BF9 . 33C0 xor eax, eax
00434BFB . F2:AE repne scas byte ptr es:[edi]
进去算法后,放眼就看到简单注册检测:
004359C2 |. F7D1 not ecx
004359C4 |. 49 dec ecx
004359C5 |. 83F9 1C cmp ecx, 1C ; 输入的假码位数,
004359C8 |. 74 06 je short 004359D0 ; 要求1C=28位数
004359CA |. 5F pop edi
004359CB |. 5E pop esi
004359CC |. 5B pop ebx
004359CD |. C2 0400 retn 4
004359D0 |> 0FBE7E 01 movsx edi, byte ptr [esi+1]
004359D4 |. 8D47 01 lea eax, dword ptr [edi+1]
004359D7 |. 83E0 06 and eax, 6
004359DA |. 3C 02 cmp al, 2 ; 要求第二位是2
004359DC |. 74 08 je short 004359E6
004359DE |. 5F pop edi
004359DF |. 5E pop esi
004359E0 |. 33C0 xor eax, eax
004359E2 |. 5B pop ebx
004359E3 |. C2 0400 retn 4
004359E6 |> 33C0 xor eax, eax
004359E8 |. 33C9 xor ecx, ecx
004359EA |> 0FBE1431 /movsx edx, byte ptr [ecx+esi] ; 这个循环
004359EE |. 03C2 |add eax, edx ; 输入的假码的ascii码累加
004359F0 |. 41 |inc ecx
004359F1 |. 83F9 1B |cmp ecx, 1B
004359F4 |.^ 7C F4 \jl short 004359EA
004359F6 |. 99 cdq ; 到这里eax里面的值就是累加值
004359F7 |. B9 34000000 mov ecx, 34 ; 常量34H
004359FC |. F7F9 idiv ecx ; 累加值整除34H
004359FE |. 83FA 1A cmp edx, 1A ; 余数和1A比较
00435A01 |. 7D 05 jge short 00435A08
00435A03 |. 80C2 41 add dl, 41 ; 小于1A的话就+41H
00435A06 |. EB 03 jmp short 00435A0B
00435A08 |> 80C2 47 add dl, 47 ; 小于1A的话就+47H
00435A0B |> 3856 1B cmp byte ptr [esi+1B], dl ; 输入的假码的最后一位如果等于相加后的结果。就注册成功
00435A0E |. 74 08 je short 00435A18 ; 跳了就成功。
00435A10 |. 5F pop edi ; 综上所述:很容易推出真码
00435A11 |. 5E pop esi
00435A12 |. 33C0 xor eax, eax
一组注册码:123456789012345678901234567K。
一下子就“已解锁为正式版本”
不知道是不是这样的。初学算法的兄弟谢谢你们耐心看完