飘云 发表于 2005-11-2 22:08:01

风云谷鼠标键盘精灵 1.1 算法分析

【破文标题】风云谷鼠标键盘精灵 1.1 算法分析
【破文作者】飘云
【破解平台】winxp
【作者邮箱】[email protected]
【软件名称】风云谷鼠标键盘精灵 1.1
【软件大小】459KB
【下载地址】http://www.onlinedown.net/soft/38319.htm
【软件说明】《风云谷鼠标键盘精灵》可以录制鼠标键盘的动作,并保存为脚本。您可以通过执行脚本,让它代替您的双手,并且您可以选择执行次数和执行速度,自动执行一系列鼠标键盘动作。它简单易用,只要您在电脑前用双手可以完成的动作,它都可以替您完成。它用途极其广泛,比如:您可以用它制作网络游戏练功机器人,制作聊天室的刷屏机,用它制作QQ炸弹,用它制作论坛的灌水机,用它来刷网站流量。。。。。。更多的用途需要您发挥自己的聪明才智去挖掘。

【破解工具】PEID0.92 OD二哥修改版
【破解步骤】先用PEID探测,为ASPack 2.12 -> Alexey Solodovnikov脱壳过程不写了,软件是重启验证,OD载入程序找到关键(怎么找关键不要我说了吧):

0046544B   B8 70564600       mov eax,unpacked.00465670          ; ASCII "166"
00465450   E8 AB33FAFF       call unpacked.00408800
00465455   50                push eax
00465456   6A 01             push 1
00465458   8D45 EC         lea eax,dword ptr ss:
0046545B   50                push eax
0046545C   B9 7C564600       mov ecx,unpacked.0046567C          ; ASCII "fengyungu"
00465461   8B55 F4         mov edx,dword ptr ss:
00465464   8B45 FC         mov eax,dword ptr ss:
00465467   E8 4CF1FFFF       call unpacked.004645B8             ====算法call====
0046546C   8B45 EC         mov eax,dword ptr ss:
0046546F   8B55 F8         mov edx,dword ptr ss:
00465472   E8 91F3F9FF       call unpacked.00404808             ;★经典部分★
00465477   75 1A             jnz short unpacked.00465493      ;暴破点

***********************************call 004645B8:*************************************************

004645B8   55                push ebp
004645B9   8BEC            mov ebp,esp
004645BB   83C4 C4         add esp,-3C
004645BE   53                push ebx
004645BF   56                push esi
004645C0   57                push edi
004645C1   33DB            xor ebx,ebx
004645C3   895D C4         mov dword ptr ss:,ebx
004645C6   895D CC         mov dword ptr ss:,ebx
004645C9   895D C8         mov dword ptr ss:,ebx
004645CC   895D D4         mov dword ptr ss:,ebx
004645CF   895D D0         mov dword ptr ss:,ebx
004645D2   895D D8         mov dword ptr ss:,ebx
004645D5   895D F0         mov dword ptr ss:,ebx
004645D8   894D F8         mov dword ptr ss:,ecx
004645DB   8955 FC         mov dword ptr ss:,edx
004645DE   8B45 FC         mov eax,dword ptr ss:
004645E1   E8 C602FAFF       call unpacked.004048AC
004645E6   8B45 F8         mov eax,dword ptr ss:
004645E9   E8 BE02FAFF       call unpacked.004048AC
004645EE   33C0            xor eax,eax
004645F0   55                push ebp
004645F1   68 BD474600       push unpacked.004647BD
004645F6   64:FF30         push dword ptr fs:
004645F9   64:8920         mov dword ptr fs:,esp
004645FC   837D F4 00      cmp dword ptr ss:,0
00464600   75 0D             jnz short unpacked.0046460F
00464602   8D45 F8         lea eax,dword ptr ss:
00464605   BA D8474600       mov edx,unpacked.004647D8          ; ASCII "fengxiao"
0046460A   E8 95FEF9FF       call unpacked.004044A4
0046460F   8B45 F8         mov eax,dword ptr ss:
00464612   E8 AD00FAFF       call unpacked.004046C4             ; 取 "fengyungu"(设它位特征码)长度(9位)
00464617   8945 F4         mov dword ptr ss:,eax
0046461A   33F6            xor esi,esi                        ; esi清0 准备下面计算
0046461C   807D 0C 00      cmp byte ptr ss:,0
00464620   0F84 99000000   je unpacked.004646BF               ;
00464626   8B7D 10         mov edi,dword ptr ss:      ; edi= =A6初始值
00464629   8D45 F0         lea eax,dword ptr ss:
0046462C   50                push eax
0046462D   897D DC         mov dword ptr ss:,edi
00464630   C645 E0 00      mov byte ptr ss:,0
00464634   8D55 DC         lea edx,dword ptr ss:
00464637   33C9            xor ecx,ecx
00464639   B8 EC474600       mov eax,unpacked.004647EC          ; ASCII "%1.2x"
0046463E   E8 C94CFAFF       call unpacked.0040930C
00464643   8B45 FC         mov eax,dword ptr ss:
00464646   E8 7900FAFF       call unpacked.004046C4             ; 取用户名长度
0046464B   85C0            test eax,eax
0046464D   0F8E 2F010000   jle unpacked.00464782
00464653   8945 E4         mov dword ptr ss:,eax
00464656   C745 EC 01000000mov dword ptr ss:,1      ; 赋初始值1
0046465D   8B45 FC         mov eax,dword ptr ss:
00464660   8B55 EC         mov edx,dword ptr ss:
00464663   0FB64410 FF       movzx eax,byte ptr ds:; 逐位取ascii
00464668   03C7            add eax,edi                        ; 加上edi的值
0046466A   B9 FF000000       mov ecx,0FF                        ; ecx = 0FF
0046466F   99                cdq
00464670   F7F9            idiv ecx                           ; mod ecx
00464672   8BDA            mov ebx,edx                        ; 余数放到ebx
00464674   3B75 F4         cmp esi,dword ptr ss:
00464677   7D 03             jge short unpacked.0046467C      ; 大于特征码长度的倍数则跳
00464679   46                inc esi                            ; 否则esi+1
0046467A   EB 05             jmp short unpacked.00464681
0046467C   BE 01000000       mov esi,1                        ; 如果大于特征码长度(9位)的倍数则esi=1从第一个字符开始
00464681   8B45 F8         mov eax,dword ptr ss:       ; 特征码送eax
00464684   0FB64430 FF       movzx eax,byte ptr ds:; 逐位取ascii送eax
00464689   33D8            xor ebx,eax                        ; 和ebx(上面取得余数) 异或运算 结果放到ebx
0046468B   8D45 D8         lea eax,dword ptr ss:
0046468E   50                push eax
0046468F   895D DC         mov dword ptr ss:,ebx
00464692   C645 E0 00      mov byte ptr ss:,0
00464696   8D55 DC         lea edx,dword ptr ss:
00464699   33C9            xor ecx,ecx
0046469B   B8 EC474600       mov eax,unpacked.004647EC          ; ASCII "%1.2x"
004646A0   E8 674CFAFF       call unpacked.0040930C             ; ebx 转换成数值
004646A5   8B55 D8         mov edx,dword ptr ss:
004646A8   8D45 F0         lea eax,dword ptr ss:
004646AB   E8 1C00FAFF       call unpacked.004046CC
004646B0   8BFB            mov edi,ebx
004646B2   FF45 EC         inc dword ptr ss:          ; +1    位置指针
004646B5   FF4D E4         dec dword ptr ss:          ; -1   长度指针
004646B8   ^ 75 A3             jnz short unpacked.0046465D      ; 循环
004646BA   E9 C3000000       jmp unpacked.00464782
004646BF   8D45 D0         lea eax,dword ptr ss:
004646C2   50                push eax
004646C3   B9 02000000       mov ecx,2
004646C8   BA 01000000       mov edx,1
004646CD   8B45 FC         mov eax,dword ptr ss:
004646D0   E8 4702FAFF       call unpacked.0040491C
004646D5   8B4D D0         mov ecx,dword ptr ss:
004646D8   8D45 D4         lea eax,dword ptr ss:
004646DB   BA FC474600       mov edx,unpacked.004647FC
004646E0   E8 2B00FAFF       call unpacked.00404710
.
.
.
.
.
(省略部分代码)
0046478D   33C0            xor eax,eax
0046478F   5A                pop edx
00464790   59                pop ecx
00464791   59                pop ecx
00464792   64:8910         mov dword ptr fs:,edx
00464795   68 C4474600       push unpacked.004647C4
0046479A   8D45 C4         lea eax,dword ptr ss:
0046479D   BA 06000000       mov edx,6
004647A2   E8 89FCF9FF       call unpacked.00404430
004647A7   8D45 F0         lea eax,dword ptr ss:
004647AA   E8 5DFCF9FF       call unpacked.0040440C
004647AF   8D45 F8         lea eax,dword ptr ss:
004647B2   BA 02000000       mov edx,2
004647B7   E8 74FCF9FF       call unpacked.00404430
004647BC   C3                retn

【算法总结】
用到了常数“A6(166)” "fengyungu"   以用户名长度为循环条件:
逐位取用户名ascii + edi(初始为A6) 然后乘以FF取余保存到ebx
逐位取"fengyungu"的ascii(如果用户名长度超过9位,则从第一个开始取) 然后 异或ebx转换成数值输出
注册码:“A6”和上面的没轮循环的结果连接即可

注册信息:
piaoyun
A671BF4FD92AEA37

【算法注册机】
论坛下载
*************************************************************************************************
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

hrbx 发表于 2005-11-2 23:41:42

支持一下,辛苦了

冷血书生 发表于 2005-11-3 22:13:43

支持+学习!

ayan 发表于 2005-11-3 22:39:42

支持!好东西

ihhvqu 发表于 2005-11-3 23:07:08

我不看过程,下下来自己也破一下,看看我能不能分析出算法,当不懂时再看看,学习学习!!!

风球 发表于 2005-11-4 09:04:36

支持```学习算法```

underghost 发表于 2005-11-4 18:41:14

再次支持算法!
页: [1]
查看完整版本: 风云谷鼠标键盘精灵 1.1 算法分析