- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】[PYG]算法分析入门第五课
【破文作者】飘云[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:[415C58] ;ebp=piaoyunOOOOOOOOOOOOOOOOOOOOOOO
004014C5 |. 33C9 xor ecx,ecx ; ecx清0
004014C7 |> 8A0429 /mov al,byte ptr ds:[ecx+ebp] ; 逐位取注册名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:[415C54] ; 假码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:[415C54],edi
00401511 |. 75 5C jnz short x-cut.0040156F
00401513 |> 8D4C24 18 lea ecx,dword ptr ss:[esp+18] 以下开始向注册表写信息
00401517 |. 8D5424 0C lea edx,dword ptr ss:[esp+C]
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:[esp+38],8 ; |
00401538 |. FF15 00004100 call dword ptr ds:[<&ADVAPI32.Re>; \RegCreateKeyExA
0040153E |. 8B4C24 0C mov ecx,dword ptr ss:[esp+C]
00401542 |. 8D4424 14 lea eax,dword ptr ss:[esp+14]
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:[esp+C]
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:[esp+10]
00401573 |. C74424 24 FFFFFFFF mov dword ptr ss:[esp+24],-1
0040157B |. E8 E4BE0000 call <jmp.&MFC42.#800>
00401580 |. 8B4C24 1C mov ecx,dword ptr ss:[esp+1C]
00401584 |. 5F pop edi
00401585 |. 5E pop esi
00401586 |. 5B pop ebx
00401587 |. 64:890D 00000000 mov dword ptr fs:[0],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 删除后又可继续分析~
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|