飘云 发表于 2005-4-7 17:00:57

[PYG]算法分析入门第五课

【破文标题】算法分析入门第五课
【破文作者】飘云
【作者主页】https://www.chinapyg.com
【破解平台】winxp
【破解工具】PEiD0.93、w32dasm、OD二哥修改版
【作者邮箱】[email protected]
【软件名称】快刀斩乱麻 V2.4
【软件大小】697 KB
【原版下载】http://www3.skycn.com/soft/7876.html
【软件简介】本软件是文件分割软件!可以把一个较大的文件,分割成好多份较小的文件,以便装于软盘中携带!别看只有一百多K的大小!功能却很强大它不但能完成普通的分割功能,而且分割后还能把输出文件放在新建的文件夹中,便于您查看和管理,合并后还能删除输出文件,以节省您的硬盘空间!本软件还能从中提取MP3的片断!这样您就可以从中间开始播放您喜爱的歌曲了!另外,本软件还支持批处理功能,这使您能一次分割几十个文件,大大节省了您的时间!本软件界面美观,简单易用您不需学习就能轻松掌握它的所有功能!相信您在磁盘空间不够时,它会成为您的得力助手!^_^
【分析过程】先用PEiD探测一下:Microsoft Visual C++ 6.0编写,用W32DASM找到以下关键(为了方便,我用OD看的代码):
004014BE      |> \55               push ebp                         ;★有个call把用户名转换为30位,不足的补0 (因为不是关键,所以没有贴出来)
004014BF      |.8B2D 585C4100      mov ebp,dword ptr ds: ;ebp=piaoyunOOOOOOOOOOOOOOOOOOOOOOO
004014C5      |.33C9               xor ecx,ecx                      ;ecx清0
004014C7      |>8A0429             /mov al,byte ptr ds:    ;逐位取注册名ascii
004014CA      |.83E0 7F            |and eax,7F                      ;上面取得值和7F做and运算
004014CD      |.69C0 3B2E0800      |imul eax,eax,82E3B            ;然后*82E3B
004014D3      |.8BF0               |mov esi,eax                     ;送到esi保存
004014D5      |.B8 E10217B8      |mov eax,B81702E1                ;初始eax=B81702E1
004014DA      |.F7EE               |imul esi                        ;与esi的值相乘
004014DC      |.03D6               |add edx,esi                     ;edx=edx+esi
004014DE      |.C1FA 06            |sar edx,6                     ;edx的值算术右移6位后保存到edx
004014E1      |.8BC2               |mov eax,edx                     ;送到eax
004014E3      |.C1E8 1F            |shr eax,1F                      ;逻辑右移1F位
004014E6      |.03D0               |add edx,eax                     ;edx=eax+edx
004014E8      |.41               |inc ecx                         ;计数器加1
004014E9      |.83F9 1E            |cmp ecx,1E                      ;和1E(即30)比较
004014EC      |.8DBC17 7A078500    |lea edi,dword ptr ds:[edi+edx+8>
004014F3      |.^ 7C D2            \jl short x-cut.004014C7         ;循环
004014F5      |.A1 545C4100      mov eax,dword ptr ds:    ;假码16进制送到eax
004014FA      |.5D               pop ebp
004014FB      |.3BC7               cmp eax,edi                      ;edi中的值转换成10进制就是你要的东西~~
004014FD      |.74 14            je short x-cut.00401513          ;★★爆破点★★
004014FF      |.53               push ebx
00401500      |.53               push ebx
00401501      |.68 58504100      push x-cut.00415058
00401506      |.E8 BFBF0000      call <jmp.&MFC42.#1200>
0040150B      |.393D 545C4100      cmp dword ptr ds:,edi
00401511      |.75 5C            jnz short x-cut.0040156F
00401513      |>8D4C24 18          lea ecx,dword ptr ss:       以下开始向注册表写信息
00401517      |.8D5424 0C          lea edx,dword ptr ss:
0040151B      |.51               push ecx                         ; /pDisposition
0040151C      |.52               push edx                         ; |pHandle
0040151D      |.53               push ebx                         ; |pSecurity
0040151E      |.68 3F000F00      push 0F003F                      ; |Access = KEY_ALL_ACCESS
00401523      |.53               push ebx                         ; |Options
00401524      |.53               push ebx                         ; |Class
00401525      |.53               push ebx                         ; |Reserved
00401526      |.68 38504100      push x-cut.00415038            ; |Subkey = "MIME\Database\Charset\sciJSD"
0040152B      |.68 00000080      push 80000000                  ; |hKey = HKEY_CLASSES_ROOT
00401530      |.C74424 38 08000000 mov dword ptr ss:,8      ; |
00401538      |.FF15 00004100      call dword ptr ds:[<&ADVAPI32.Re>; \RegCreateKeyExA
0040153E      |.8B4C24 0C          mov ecx,dword ptr ss:
00401542      |.8D4424 14          lea eax,dword ptr ss:
00401546      |.6A 04            push 4                           ; /BufSize = 4
00401548      |.50               push eax                         ; |Buffer
00401549      |.6A 04            push 4                           ; |ValueType = REG_DWORD
0040154B      |.53               push ebx                         ; |Reserved
0040154C      |.68 30504100      push x-cut.00415030            ; |ValueName = "option"
00401551      |.51               push ecx                         ; |hKey
00401552      |.FF15 04004100      call dword ptr ds:[<&ADVAPI32.Re>; \RegSetValueExA
00401558      |.8B5424 0C          mov edx,dword ptr ss:
0040155C      |.52               push edx                         ; /hKey
0040155D      |.FF15 08004100      call dword ptr ds:[<&ADVAPI32.Re>; \RegCloseKey
00401563      |.6A 01            push 1
00401565      |.B9 E85B4100      mov ecx,x-cut.00415BE8
0040156A      |.E8 55BF0000      call <jmp.&MFC42.#2645>
0040156F      |>8D4C24 10          lea ecx,dword ptr ss:
00401573      |.C74424 24 FFFFFFFF mov dword ptr ss:,-1
0040157B      |.E8 E4BE0000      call <jmp.&MFC42.#800>
00401580      |.8B4C24 1C          mov ecx,dword ptr ss:
00401584      |.5F               pop edi
00401585      |.5E               pop esi
00401586      |.5B               pop ebx
00401587      |.64:890D 00000000   mov dword ptr fs:,ecx
0040158E      |.83C4 1C            add esp,1C
00401591      \.C3               retn

破解总结:
把用户名转换成30位,再做一系列的循环计算即是注册码

我的信息:
用户名:piaoyun
注册码:277147827

内存注册机:
中断地址:4014FB
中断次数:1
第一字节:3B
指令长度:2
寄存器方式-edi-十进制

附:注册信息保存在HKEY_CLASSES_ROOT\MIME\Database\Charset\SciJSD 删除后又可继续分析~

【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

yijun 发表于 2005-4-7 17:31:06

辛苦了,学习中~~~~~~

ihhvqu 发表于 2005-10-16 20:44:51

顶..........

Iceman 发表于 2005-11-4 11:39:17

学习。。。。。。。。。。。

木易草 发表于 2006-3-15 13:02:08

似乎有点点看懂了

rhinomax 发表于 2006-3-26 13:44:38

3q...........

wangyc75 发表于 2006-7-5 19:45:19

太强了

谢谢

pepsiguest 发表于 2006-7-24 17:58:55

很好的教材,还有些地方没有懂``慢慢看```

sky3749 发表于 2006-7-25 11:36:28

全部收藏了,慢慢看!

沙粒 发表于 2006-7-30 13:53:22

收藏了,慢慢看
页: [1] 2 3 4
查看完整版本: [PYG]算法分析入门第五课