[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 删除后又可继续分析~
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 辛苦了,学习中~~~~~~ 顶.......... 学习。。。。。。。。。。。 似乎有点点看懂了 3q........... 太强了
谢谢 很好的教材,还有些地方没有懂``慢慢看``` 全部收藏了,慢慢看! 收藏了,慢慢看