- UID
- 35204
注册时间2007-8-25
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
【破文标题】Quick Batch File Compiler V2.1.6.0 BY seonts
【破文作者】senots
【作者邮箱】
【作者主页】
【破解工具】OD/PEID
【破解平台】XP
【软件名称】Quick Batch File Compiler V2.1.6.0
【软件大小】1076KB
【原版下载】http://tele.skycn.com/soft/29356.html#download
【保护方式】
【软件简介】Quick Batch File Compiler是一款通过一次点击就可以将批处理文件转换成真正的可执行文件的程序,它可以毫无限制地运行于Windows 95/98/ME/2000/2003/XP下。批处理文件的内容能够被保护以防止改变。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
------------------------------------------------------------------------
【破解过程】哈哈`~无聊。在天空下了个这个。发现是个软柿子~~~~
~高手飘过。新手进来看看就可以了~~
安装后。主程序是quickbfc.exe。
一、脱壳。UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo。
UPX的。直接搜索popad。搞定。
二、脱壳后是Borland Delphi 6.0 - 7.0的。OD载入~
然后超级字符串搜索~
发现注册表中有东西~
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Abyssmedia\Quick Batch File Compiler\Settings]
"user"="senots"
"key"="78787878"
"exetype"=dword:00000001
"savedir"="D:\\Program Files\\Quick Batch File Compiler\\"
"samename"=dword:00000000
"fontname"="Courier New"
"password"=""
呵呵。程序会把注册码跟用户名保存到这里。
同时发现
2ce78c0a5aaf440ace43c74773b98d6d04d0298c41e427e32980b94faf0be564562a865b05444575a88d6d8d36ca7138bad5e6c1c7bd8d59e4300d3b9c9a5823766b1c393e9c7cc19fde2bc0c060da9b4e4c8040a042856d18fe1f6b2fbdd1dced5ab2648267e95105985a16e37d6ef964901a8094dfe68c6d7965520e8e ....
这么长串东西~~~~~(经后面调试~发现应该有2048个字符。。)。应该跟注册算法有关。双击。来到004A2E2B处。
运行程序,来到注册窗口。填入内容senots 78787878。在004A2E09下断。点注册。断了下来。
004A2E09 51 push ecx
004A2E0A 51 push ecx
004A2E0B 51 push ecx
004A2E0C 51 push ecx
004A2E0D 51 push ecx
004A2E0E 53 push ebx
004A2E0F 56 push esi
004A2E10 8955 FC mov dword ptr ss:[ebp-4],edx
004A2E13 8B45 FC mov eax,dword ptr ss:[ebp-4]
004A2E16 E8 611CF6FF call unpack.00404A7C
004A2E1B 33C0 xor eax,eax
004A2E1D 55 push ebp
004A2E1E 68 9D2E4A00 push unpack.004A2E9D
004A2E23 64:FF30 push dword ptr fs:[eax]
004A2E26 64:8920 mov dword ptr fs:[eax],esp
004A2E29 33DB xor ebx,ebx
004A2E2B B8 A8B04700 mov eax,unpack.0047B0A8 ; 2ce78c0a5aaf440ace43c74773b98d6d04d0298c41e427e32980b94faf0be564562a865b05444575a88d6d8d36ca7138bad5e6c1c7bd8d59e4300d3b9c9a5823766b1c393e9c7cc19fde2bc0c060da9b4e4c8040a042856d18fe1f6b2fbdd1dced5ab2648267e95105985a16e37d6ef964901a8094dfe68c6d7965520e8e ...
004A2E30 8945 F0 mov dword ptr ss:[ebp-10],eax
004A2E33 8D45 F8 lea eax,dword ptr ss:[ebp-8]
004A2E36 E8 9117F6FF call unpack.004045CC
004A2E3B 8D4D F4 lea ecx,dword ptr ss:[ebp-C]
004A2E3E 8B55 FC mov edx,dword ptr ss:[ebp-4]
004A2E41 B8 03010000 mov eax,103
004A2E46 E8 C97AFDFF call unpack.0047A914
004A2E4B 33F6 xor esi,esi
004A2E4D 8D45 EC lea eax,dword ptr ss:[ebp-14]
004A2E50 8BD6 mov edx,esi
004A2E52 C1E2 02 shl edx,2
004A2E55 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
004A2E58 8D14D1 lea edx,dword ptr ds:[ecx+edx*8]
004A2E5B B9 20000000 mov ecx,20
004A2E60 E8 D719F6FF call unpack.0040483C
004A2E65 8B45 EC mov eax,dword ptr ss:[ebp-14] ;从2048个取第N组32个字符出来(N为循环次数)
004A2E68 8B55 F4 mov edx,dword ptr ss:[ebp-C] ;不知道从什么得来的32个字符(好象是从输入的注册码得来的)
004A2E6B E8 681BF6FF call unpack.004049D8 ;比较是否相等
004A2E70 75 02 jnz short unpack.004A2E74 ;关键跳。NOP掉!
004A2E72 B3 01 mov bl,1
004A2E74 46 inc esi
004A2E75 83FE 65 cmp esi,65 ;控制循环次数
004A2E78 ^ 75 D3 jnz short unpack.004A2E4D ;循环。
004A2E7A 33C0 xor eax,eax
004A2E7C 5A pop edx
004A2E7D 59 pop ecx
004A2E7E 59 pop ecx
004A2E7F 64:8910 mov dword ptr fs:[eax],edx
004A2E82 68 A42E4A00 push unpack.004A2EA4
004A2E87 8D45 EC lea eax,dword ptr ss:[ebp-14]
004A2E8A E8 3D17F6FF call unpack.004045CC
004A2E8F 8D45 F4 lea eax,dword ptr ss:[ebp-C]
004A2E92 BA 03000000 mov edx,3
004A2E97 E8 5417F6FF call unpack.004045F0
004A2E9C C3 retn
004A2E9D ^\E9 0611F6FF jmp unpack.00403FA8
004A2EA2 ^ EB E3 jmp short unpack.004A2E87
004A2EA4 8BC3 mov eax,ebx
004A2EA6 5E pop esi
004A2EA7 5B pop ebx
004A2EA8 8BE5 mov esp,ebp
004A2EAA 5D pop ebp
004A2EAB C3 retn ;这里返回到4A3486
-------------------------------------------------------------
从004A2EAB返回到下面:
004A3486 84C0 test al,al
004A3488 74 35 je short unpack.004A34BF ;al如果为0则注册失败。不跳注册成功
004A348A 6A 00 push 0
004A348C 66:8B0D C4344A00 mov cx,word ptr ds:[4A34C4]
004A3493 B2 02 mov dl,2
004A3495 B8 D0344A00 mov eax,unpack.004A34D0 ; registration successful!
004A349A E8 AD00F9FF call unpack.0043354C
004A349F 8B83 70030000 mov eax,dword ptr ds:[ebx+370]
004A34A5 8B80 08020000 mov eax,dword ptr ds:[eax+208]
004A34AB BA 01000000 mov edx,1
004A34B0 E8 7FD9F9FF call unpack.00440E34
004A34B5 BA F4344A00 mov edx,unpack.004A34F4 ; registered version
004A34BA E8 D1D8F9FF call unpack.00440D90
004A34BF 5B pop ebx
004A34C0 C3 retn
***004A2E70处就是关键跳了!!!NOP掉就OK了*******
但是,改004A3488 处的跳转只是当时注册成功。重启动后又不成功了~~~~应该有重启验证咯`~
依然在004A2E09处下断点。然后再运行程序。好。断下来。
一路F8。发现最后的retn返回到了004A3F8E
004A3F8E 84C0 test al,al
004A3F90 74 20 je short unpack.004A3FB2
004A3F92 8B83 70030000 mov eax,dword ptr ds:[ebx+370]
004A3F98 8B80 08020000 mov eax,dword ptr ds:[eax+208]
004A3F9E BA 01000000 mov edx,1
004A3FA3 E8 8CCEF9FF call unpack.00440E34
004A3FA8 BA E0414A00 mov edx,unpack.004A41E0 ; registered version
*******************这里就是重启验证了,004A3F90也应该nop掉!***********************
接上,F9运行程序后,点注册模块。又被断在004A2E09~哈~一样是判断是否注册。
这次,retn返回到004A0DE8。
004A0DE8 84C0 test al,al
004A0DEA 74 57 je short unpack.004A0E43
004A0DEC 8B15 64884A00 mov edx,dword ptr ds:[4A8864] ; unpack.004AC1CC
004A0DF2 8B12 mov edx,dword ptr ds:[edx]
004A0DF4 8B83 18030000 mov eax,dword ptr ds:[ebx+318]
004A0DFA E8 0D71FBFF call unpack.00457F0C
004A0DFF BA 500E4A00 mov edx,unpack.004A0E50 ; registered version
004A0E04 8B83 20030000 mov eax,dword ptr ds:[ebx+320]
**********************这里判断是否注册,来控制注册模块是否禁用***********************
写得很乱。不管这样,都会通过004A2E70处的跳转来影响al的值。所以。这里为关键跳咯。其他不用改。
nop掉004A2E70则注册成功。
也试着去跟了下算法。。。。。搞不明白。。哎~~~~
附上我的loader补丁。呵呵`~
------------------------------------------------------------------------
【破解总结】算法搞不懂。。。。。。
------------------------------------------------------------------------
【版权声明】本破文纯属技术交流, 版权归飘云阁所有,转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 senots 于 2007-10-7 21:03 编辑 ] |
评分
-
查看全部评分
|