好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 heiketian10 于 2010-12-10 17:47 编辑
【文章标题】: 中原文件夹加密破解爆破+过伪ThemIDA虚拟机检测
【文章作者】: heiketian10
【作者邮箱】: .com
【作者主页】: @###@#@#@#
【作者QQ号】: 13位【软件名称】:
中原文件夹加密【软件大小】: 2.82 MB
【下载地址】: 自己搜索下载
【加壳方式】: 无壳
【保护方式】: 注册码+重启验证
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: od【操作平台】: xp sp2
【软件介绍】: 这个软件是一个。。。。。下载的时候都有的。。。。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【详细过程】
今天在论坛上看见有人发布了一个中原文件夹加密的破解版本;授人以渔,总是根本性的;
本人太菜,就找个软柿子捏。下面和大家一起分析一下对于软件的爆破和去掉一个类似于
Themida虚拟机检测的提示-------作者太能忽悠了。
--------前言
-----------------------------------【任务】--------------------------------
1、软件标题显示xx注册版;
2、解除不能修改登录密码的限制;(单纯的标题显示注册版就算是伪破解吧);
3、由于在虚拟机里调试,有一个Themida的-----can't run under virtual machine的窗口提示--------干掉他。
---------------------------------------------------------------------------------------
【任务1】 破解显示注册版 第一步:
程序载入od-----由于是没有加壳的,大家首相想到的就是“字符串”参考-----至少对于我是;
里面有几个:
上面这样的提示有两处,大家可以分别段首【其实就是在一段,段一次就可以,具体大家看代码】;
接着找一下一个:【这个是重点】-----依然段首;
【友情提示,在搜索完毕字符串的时候,双击跟进在汇编窗口有可能相应的注释没有显示,你可以手动复制过来】
-----------------------------------------------------------------------------------------------------
第二步: 上面下了断点;od重新载入程序----开工 点击f9运行,看看段在哪里;
-------------【注意,多问问段在的地方有没有用】
第一次断下来是在下面这段代码: 着重分析下跳转,发现也没有什么特别重要的地方;
结果证实,这段代码跑过,就出现了登录框和Themida提示;
而且段在了下一个地方了哦---------------也就是第二处断点;------------------滑动鼠标吧各位亲们---
00401640 . 6A FF push -0x1
00401642 . 68 FD324300 push 中原文件.004332FD ; SE 处理程序安装
00401647 . 64:A1 0000000>mov eax,dword ptr fs:[0]
0040164D . 50 push eax
0040164E . 64:8925 00000>mov dword ptr fs:[0],esp
00401655 . 81EC 54020000 sub esp,0x254
0040165B . 53 push ebx
0040165C . 55 push ebp
0040165D . 56 push esi
0040165E . 33DB xor ebx,ebx
00401660 . 57 push edi
00401661 . 8BF1 mov esi,ecx
00401663 . 53 push ebx
00401664 . 897424 24 mov dword ptr ss:[esp+0x24],esi
00401668 . E8 A4180300 call 中原文件.00432F11
0040166D . 85C0 test eax,eax
0040166F . 75 0F jnz short 中原文件.00401680
00401671 . 6A FF push -0x1
00401673 . 53 push ebx
00401674 . 6A 67 push 0x67
00401676 . E8 76D30200 call 中原文件.0042E9F1
0040167B . E9 42040000 jmp 中原文件.00401AC2
00401680 > 53 push ebx
00401681 . E8 41B90000 call 中原文件.0040CFC7
00401686 . 83C4 04 add esp,0x4
00401689 . 8BCE mov ecx,esi
0040168B . E8 05E90200 call 中原文件.0042FF95
00401690 . B9 41000000 mov ecx,0x41
00401695 . 33C0 xor eax,eax
00401697 . 8DBC24 600100>lea edi,dword ptr ss:[esp+0x160]
0040169E . 68 04010000 push 0x104 ; /BufSize = 104 (260.)
004016A3 . F3:AB rep stos dword ptr es:[edi] ; |
004016A5 . 8D8424 640100>lea eax,dword ptr ss:[esp+0x164] ; |
004016AC . 50 push eax ; |Buffer
004016AD . FF15 CC624300 call dword ptr ds:[<&KERNEL32.GetSystemD>; \GetSystemDirectoryA
004016B3 . 68 288E4400 push 中原文件.00448E28
004016B8 . 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
004016BC . E8 C5800200 call 中原文件.00429786
004016C1 . 8D8C24 600100>lea ecx,dword ptr ss:[esp+0x160]
004016C8 . 8D5424 1C lea edx,dword ptr ss:[esp+0x1C]
004016CC . 51 push ecx
004016CD . 68 E0414400 push 中原文件.004441E0 ; ASCII "%s\protect.db"
【此处省略部分代码】
004017CC . 50 push eax
004017CD . 68 90414400 push 中原文件.00444190 ; ASCII "indir"
004017D2 . E8 B9620000 call 中原文件.00407A90
004017D7 > 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
004017DB . E8 50620000 call 中原文件.00407A30
004017E0 . 68 70414400 push 中原文件.00444170 ; 中原文件夹加密 3.5 [未注册用户]
004017E5 . 68 68414400 push 中原文件.00444168 ; ASCII "#32770"
004017EA . FFD5 call ebp
004017EC . 8BF0 mov esi,eax
004017EE . 3BF3 cmp esi,ebx
004017F0 . 75 12 jnz short 中原文件.00401804
004017F2 . 68 48414400 push 中原文件.00444148 ; 中原文件夹加密 3.5 [已注册用户]
004017F7 . 68 68414400 push 中原文件.00444168 ; ASCII "#32770"
004017FC . FFD5 call ebp
004017FE . 8BF0 mov esi,eax
00401800 . 3BF3 cmp esi,ebx
00401802 . 74 21 je short 中原文件.00401825
00401804 > 56 push esi ; /hWnd
00401805 . FF15 F4644300 call dword ptr ds:[<&USER32.IsWindow>] ; \IsWindow
0040180B . 85C0 test eax,eax
0040180D . 74 16 je short 中原文件.00401825
0040180F . 53 push ebx ; /lParam
00401810 . 53 push ebx ; |wParam
00401811 . 6A 10 push 0x10 ; |Message = WM_CLOSE
00401813 . 56 push esi ; |hWnd
00401814 . FF15 F8644300 call dword ptr ds:[<&USER32.PostMessageA>; \PostMessageA
0040181A . 68 F00A0000 push 0xAF0 ; /Timeout = 2800. ms
0040181F . FF15 D0624300 call dword ptr ds:[<&KERNEL32.Sleep>] ; \Sleep
00401825 > 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
00401829 . C68424 6C0200>mov byte ptr ss:[esp+0x26C],0x1
00401831 . E8 2A610000 call 中原文件.00407960
00401836 . E9 5A010000 jmp 中原文件.00401995
0040183B > 68 40414400 push 中原文件.00444140 ; ASCII "/des "
00401840 . 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
00401844 . E8 84250200 call 中原文件.00423DCD
00401849 . 85C0 test eax,eax
0040184B . 68 288E4400 push 中原文件.00448E28
00401850 . 0F8C 35010000 jl 中原文件.0040198B
00401856 . 68 38414400 push 中原文件.00444138 ; ASCII "/des"
0040185B . 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
0040185F . E8 4E230200 call 中原文件.00423BB2
00401864 . 68 288E4400 push 中原文件.00448E28
00401869 . 68 D0414400 push 中原文件.004441D0
0040186E . 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
00401872 . E8 3B230200 call 中原文件.00423BB2
00401877 . 68 288E4400 push 中原文件.00448E28
0040187C . 68 D0414400 push 中原文件.004441D0
00401881 . 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
00401885 . E8 28230200 call 中原文件.00423BB2
0040188A . 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0040188E . E8 1F290200 call 中原文件.004241B2
00401893 . 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
00401897 . E8 CA280200 call 中原文件.00424166
0040189C . 68 288E4400 push 中原文件.00448E28
004018A1 . B9 D0974400 mov ecx,中原文件.004497D0
004018A6 . E8 F67F0200 call 中原文件.004298A1
004018AB . 51 push ecx
004018AC . 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
004018B0 . 8BCC mov ecx,esp
004018B2 . 896424 18 mov dword ptr ss:[esp+0x18],esp
004018B6 . 52 push edx
004018B7 . E8 D17B0200 call 中原文件.0042948D
004018BC . B9 28974400 mov ecx,中原文件.00449728 ; ASCII "hwC"
004018C1 . E8 DAAE0000 call 中原文件.0040C7A0
004018C6 . 3BC3 cmp eax,ebx
004018C8 . 7C 68 jl short 中原文件.00401932
004018CA . 50 push eax
004018CB . 53 push ebx
004018CC . B9 28974400 mov ecx,中原文件.00449728 ; ASCII "hwC"
004018D1 . E8 6AA30000 call 中原文件.0040BC40
004018D6 . 68 70414400 push 中原文件.00444170 ; 中原文件夹加密 3.5 [未注册用户]
004018DB . 68 68414400 push 中原文件.00444168 ; ASCII "#32770"
004018E0 . FFD5 call ebp
004018E2 . 8BF0 mov esi,eax
004018E4 . 3BF3 cmp esi,ebx
004018E6 . 75 16 jnz short 中原文件.004018FE
004018E8 . 68 48414400 push 中原文件.00444148 ; 中原文件夹加密 3.5 [已注册用户]
004018ED . 68 68414400 push 中原文件.00444168 ; ASCII "#32770"
004018F2 . FFD5 call ebp
004018F4 . 8BF0 mov esi,eax
004018F6 . 3BF3 cmp esi,ebx
004018F8 . 0F84 97000000 je 中原文件.00401995
004018FE > 56 push esi ; /hWnd
004018FF . FF15 F4644300 call dword ptr ds:[<&USER32.IsWindow>] ; \IsWindow
00401905 . 85C0 test eax,eax
00401907 . 0F84 88000000 je 中原文件.00401995
0040190D . 56 push esi ; /hWnd
0040190E . FF15 FC644300 call dword ptr ds:[<&USER32.IsWindowVisi>; \IsWindowVisible
00401914 . 85C0 test eax,eax
00401916 . 74 07 je short 中原文件.0040191F
00401918 . 56 push esi ; /hWnd
00401919 . FF15 6C644300 call dword ptr ds:[<&USER32.SetForegroun>; \SetForegroundWindow
0040191F > 53 push ebx ; /lParam
00401920 . 53 push ebx ; |wParam
00401921 . 68 23040000 push 0x423 ; |Message = WM_USER+35.
00401926 . 56 push esi ; |hWnd
00401927 . FF15 F8644300 call dword ptr ds:[<&USER32.PostMessageA>; \PostMessageA
0040192D . E9 6C010000 jmp 中原文件.00401A9E
00401932 > 8B4424 10 mov eax,dword ptr ss:[esp+0x10]
【此处省略N多代码】
00401AC9 . 5F pop edi
00401ACA . 5E pop esi
00401ACB . 5D pop ebp
00401ACC . 33C0 xor eax,eax
00401ACE . 64:890D 00000>mov dword ptr fs:[0],ecx
00401AD5 . 5B pop ebx
00401AD6 . 81C4 60020000 add esp,0x260
00401ADC . C3 retn
---------------------【上面这段代码就算是给大家参考了】---------------------
先不理会Themida提示;直接点击退出这个提示,在登陆框里面输入原始密码“123456”
点击“确定登录”;然后段到下面的地方了;
第二个断点处:【这个是重点】
00403690 . 6A FF push -0x1
00403692 . 68 50374300 push 中原文件.00433750 ; SE 处理程序安装
00403697 . 64:A1 0000000>mov eax,dword ptr fs:[0]
0040369D . 50 push eax
0040369E . 64:8925 00000>mov dword ptr fs:[0],esp
004036A5 . 51 push ecx
004036A6 . A1 048F4400 mov eax,dword ptr ds:[0x448F04]
004036AB . 56 push esi
004036AC . 85C0 test eax,eax
004036AE . 8BF1 mov esi,ecx
004036B0 . 74 17 je short 中原文件.004036C9
004036B2 . E8 C12B0200 call 中原文件.00426278
004036B7 . 5E pop esi
004036B8 . 8B4C24 04 mov ecx,dword ptr ss:[esp+0x4]
004036BC . 64:890D 00000>mov dword ptr fs:[0],ecx
004036C3 . 83C4 10 add esp,0x10
004036C6 . C2 0400 retn 0x4
004036C9 > 8B4424 18 mov eax,dword ptr ss:[esp+0x18]
004036CD . C705 048F4400>mov dword ptr ds:[0x448F04],0x1
004036D7 . 83F8 0A cmp eax,0xA
004036DA . 0F85 A6000000 jnz 中原文件.00403786 ; 一定要关注这个跳转,跳过去就死定了---nop
004036E0 . 8B46 1C mov eax,dword ptr ds:[esi+0x1C]
004036E3 . 6A 0A push 0xA ; /TimerID = A (10.)
004036E5 . 50 push eax ; |hWnd
004036E6 . FF15 04654300 call dword ptr ds:[<&USER32.KillTimer>] ; \KillTimer
004036EC . 68 288E4400 push 中原文件.00448E28
004036F1 . 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
004036F5 . E8 8C600200 call 中原文件.00429786
004036FA . 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
004036FE . C74424 10 000>mov dword ptr ss:[esp+0x10],0x0
00403706 . 51 push ecx
00403707 . 8BCE mov ecx,esi
00403709 . E8 CE350200 call 中原文件.00426CDC
0040370E . 68 48414400 push 中原文件.00444148 ; 中原文件夹加密 3.5 [已注册用户]
00403713 . 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
00403717 . E8 85610200 call 中原文件.004298A1
0040371C . 8B5424 18 mov edx,dword ptr ss:[esp+0x18]
00403720 . 8BCE mov ecx,esi
00403722 . 52 push edx
00403723 . E8 2C560200 call 中原文件.00428D54
00403728 . 68 288E4400 push 中原文件.00448E28
0040372D . 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
00403731 . E8 50600200 call 中原文件.00429786
00403736 . 8B46 1C mov eax,dword ptr ds:[esi+0x1C]
00403739 . 8D4C24 04 lea ecx,dword ptr ss:[esp+0x4]
0040373D . 50 push eax
0040373E . 68 60424400 push 中原文件.00444260 ; ASCII "%d"
00403743 . 51 push ecx
00403744 . C64424 1C 01 mov byte ptr ss:[esp+0x1C],0x1
00403749 . E8 050A0200 call 中原文件.00424153
0040374E . 8B5424 10 mov edx,dword ptr ss:[esp+0x10]
00403752 . A1 B0974400 mov eax,dword ptr ds:[0x4497B0]
00403757 . 83C4 0C add esp,0xC
0040375A . 52 push edx ; /String
0040375B . 68 FC434400 push 中原文件.004443FC ; |Key = "lookwnd"
00403760 . 50 push eax ; |Section => "FileProtect"
00403761 . FF15 C8624300 call dword ptr ds:[<&KERNEL32.WriteProfi>; \WriteProfileStringA
00403767 . 8D4C24 04 lea ecx,dword ptr ss:[esp+0x4]
0040376B . C64424 10 00 mov byte ptr ss:[esp+0x10],0x0
00403770 . E8 A35F0200 call 中原文件.00429718
00403775 . 8D4C24 18 lea ecx,dword ptr ss:[esp+0x18]
00403779 . C74424 10 FFF>mov dword ptr ss:[esp+0x10],-0x1
00403781 . E8 925F0200 call 中原文件.00429718
00403786 > 68 98434400 push 中原文件.00444398 ; /Title = "FileProtected"
0040378B . 68 68414400 push 中原文件.00444168 ; |Class = "#32770"
00403790 . FF15 F0644300 call dword ptr ds:[<&USER32.FindWindowA>>; \FindWindowA
00403796 . 85C0 test eax,eax
00403798 . 74 07 je short 中原文件.004037A1
0040379A . 68 EC434400 push 中原文件.004443EC
0040379F . EB 05 jmp short 中原文件.004037A6
004037A1 > 68 DC434400 push 中原文件.004443DC
004037A6 > 8D4E 5C lea ecx,dword ptr ds:[esi+0x5C]
004037A9 . E8 A6550200 call 中原文件.00428D54
004037AE . 8BCE mov ecx,esi
004037B0 . E8 C32A0200 call 中原文件.00426278
004037B5 . 8B4C24 08 mov ecx,dword ptr ss:[esp+0x8]
004037B9 . C705 048F4400>mov dword ptr ds:[0x448F04],0x0
004037C3 . 5E pop esi
004037C4 . 64:890D 00000>mov dword ptr fs:[0],ecx
004037CB . 83C4 10 add esp,0x10
004037CE . C2 0400 retn 0x4
-----------------------------【nop掉这个jnz之后,运行程序就成了“已注册”了】---------------------------------
【任务2】: 解除修不能修改登录密码的限制;【都显示注册了,再不能用修改登录密码,你心里爽?????????】
依然字符串找限制提示“只有注册用户才能设置登录密码!”啊:
双击跟进代码:段首分析掠过。。。。
修复如下:
00402750 . 64:A1 0000000>mov eax,dword ptr fs:[0]
00402756 . 6A FF push -0x1
00402758 . 68 47354300 push 中原文件.00433547
0040275D . 50 push eax
0040275E . A1 74974400 mov eax,dword ptr ds:[0x449774]
00402763 . 64:8925 00000>mov dword ptr fs:[0],esp
0040276A . 81EC 04010000 sub esp,0x104
00402770 . 85C0 test eax,eax
00402772 . 56 push esi
00402773 . 8BF1 mov esi,ecx
00402775 . 6A 00 push 0x0
00402777 . 0F84 AF000000 je 中原文件.0040282C ; 这个je修改成jmp就行了
0040277D . 8D4C24 6C lea ecx,dword ptr ss:[esp+0x6C]
00402781 . E8 EA170000 call 中原文件.00403F70
00402786 . 68 A4424400 push 中原文件.004442A4
0040278B . 8D8C24 040100>lea ecx,dword ptr ss:[esp+0x104]
00402792 . C78424 140100>mov dword ptr ss:[esp+0x114],0x0
0040279D . E8 FF700200 call 中原文件.004298A1
004027A2 . 68 84424400 push 中原文件.00444284 ; 只有注册用户才能设置登录密码!
004027A7 . 8D8C24 080100>lea ecx,dword ptr ss:[esp+0x108]
004027AE . E8 EE700200 call 中原文件.004298A1
004027B3 . 8D4C24 68 lea ecx,dword ptr ss:[esp+0x68]
004027B7 . E8 30320200 call 中原文件.004259EC
004027BC . 8D8C24 040100>lea ecx,dword ptr ss:[esp+0x104]
004027C3 . C78424 100100>mov dword ptr ss:[esp+0x110],0x3
--------------------------【至此,程序破解算是完成了,功能也能用,非虚拟机环境也可以正常使用了】-------------------------------
【任务3】:Fuck 伪Themida
但是在虚拟机下运行竟然有这个提示:Themida xxxxxxxx ;那就一起干掉了,前面已经说过了,
找到system32下面有一个:FileEn.EXE就是罪魁祸首,拿命来。。。。。。。。。。。。。。。
第一步:
搜索字符串:FileEn.EXE
这个确实有很多,很多,很多。。。。。大家依次双击跟进, “段首”---------别忘了以前的断点删掉;
方便调试啊。。。。。
下好所有的断点之后,我们重新载入程序,f9运行;第一次段在:
0040B890 /$ 6A FF push -0x1
0040B892 |. 68 30434300 push 中原文件.00434330 ; SE 处理程序安装
0040B897 |. 64:A1 0000000>mov eax,dword ptr fs:[0]
0040B89D |. 50 push eax
0040B89E |. 64:8925 00000>mov dword ptr fs:[0],esp
0040B8A5 |. 83EC 0C sub esp,0xC
0040B8A8 |. 56 push esi
0040B8A9 |. 8BF1 mov esi,ecx
0040B8AB |. 68 02000080 push 0x80000002
0040B8B0 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0040B8B4 |. E8 67C0FFFF call 中原文件.00407920
0040B8B9 |. 68 584B4400 push 中原文件.00444B58 ; ASCII "Software\Microsoft\Windows\CurrentVersion\Run"
0040B8BE |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0040B8C2 |. C74424 1C 000>mov dword ptr ss:[esp+0x1C],0x0
0040B8CA |. E8 21C1FFFF call 中原文件.004079F0
0040B8CF |. 85C0 test eax,eax
0040B8D1 |. 74 62 je short 中原文件.0040B935 ; 这个跳转跳 je --jmp
0040B8D3 |. 68 288E4400 push 中原文件.00448E28
0040B8D8 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0040B8DC |. E8 A5DE0100 call 中原文件.00429786
0040B8E1 |. 8B46 34 mov eax,dword ptr ds:[esi+0x34]
0040B8E4 |. 8D4C24 04 lea ecx,dword ptr ss:[esp+0x4]
0040B8E8 |. 50 push eax
0040B8E9 |. 68 88434400 push 中原文件.00444388 ; ASCII "%s\FileEn.exe"
0040B8EE |. 51 push ecx
0040B8EF |. C64424 24 01 mov byte ptr ss:[esp+0x24],0x1
0040B8F4 |. E8 5A880100 call 中原文件.00424153
0040B8F9 |. 8B4424 2C mov eax,dword ptr ss:[esp+0x2C]
0040B8FD |. 83C4 0C add esp,0xC
0040B900 |. 85C0 test eax,eax
0040B902 |. 75 10 jnz short 中原文件.0040B914
0040B904 |. 68 4C4B4400 push 中原文件.00444B4C ; ASCII "fileProtect"
0040B909 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0040B90D |. E8 3EC1FFFF call 中原文件.00407A50
0040B912 |. EB 13 jmp short 中原文件.0040B927
0040B914 |> 8B5424 04 mov edx,dword ptr ss:[esp+0x4]
0040B918 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0040B91C |. 52 push edx
0040B91D |. 68 4C4B4400 push 中原文件.00444B4C ; ASCII "fileProtect"
0040B922 |. E8 69C1FFFF call 中原文件.00407A90
0040B927 |> 8D4C24 04 lea ecx,dword ptr ss:[esp+0x4]
0040B92B |. C64424 18 00 mov byte ptr ss:[esp+0x18],0x0
0040B930 |. E8 E3DD0100 call 中原文件.00429718
0040B935 |> 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
0040B939 |. C74424 18 FFF>mov dword ptr ss:[esp+0x18],-0x1
0040B941 |. E8 1AC0FFFF call 中原文件.00407960
0040B946 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+0x10]
0040B94A |. 5E pop esi
0040B94B |. 64:890D 00000>mov dword ptr fs:[0],ecx
0040B952 |. 83C4 18 add esp,0x18
0040B955 \. C2 0400 retn 0x4
--------------------------------------------------------------------------------------
第二次段在这里:
0040B210 /$ 64:A1 0000000>mov eax,dword ptr fs:[0]
0040B216 |. 6A FF push -0x1
0040B218 |. 68 EC424300 push 中原文件.004342EC
0040B21D |. 50 push eax
0040B21E |. 64:8925 00000>mov dword ptr fs:[0],esp
0040B225 |. 81EC 18010000 sub esp,0x118
0040B22B |. 33C0 xor eax,eax
0040B22D |. 53 push ebx
0040B22E |. 55 push ebp
0040B22F |. 56 push esi
0040B230 |. 8BD9 mov ebx,ecx
0040B232 |. 8B35 70624300 mov esi,dword ptr ds:[<&KERNEL32.GetModu>; kernel32.GetModuleFileNameA
0040B238 |. 57 push edi
0040B239 |. B9 41000000 mov ecx,0x41
0040B23E |. 8D7C24 24 lea edi,dword ptr ss:[esp+0x24]
0040B242 |. F3:AB rep stos dword ptr es:[edi]
0040B244 |. 8D4424 24 lea eax,dword ptr ss:[esp+0x24]
0040B248 |. 68 04010000 push 0x104 ; /BufSize = 104 (260.)
0040B24D |. 50 push eax ; |PathBuffer
0040B24E |. 6A 00 push 0x0 ; |hModule = NULL
0040B250 |. FFD6 call esi ; \GetModuleFileNameA
0040B252 |. 8B2D A0624300 mov ebp,dword ptr ds:[<&KERNEL32.lstrlen>; kernel32.lstrlenA
0040B258 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+0x24]
0040B25C |. 51 push ecx ; /String
0040B25D |. FFD5 call ebp ; \lstrlenA
0040B25F |. 48 dec eax
0040B260 |. 78 11 js short 中原文件.0040B273
0040B262 |> 807C04 24 5C /cmp byte ptr ss:[esp+eax+0x24],0x5C
0040B267 |. 74 05 |je short 中原文件.0040B26E
0040B269 |. 48 |dec eax
0040B26A |.^ 79 F6 \jns short 中原文件.0040B262
0040B26C |. EB 05 jmp short 中原文件.0040B273
0040B26E |> C64404 25 00 mov byte ptr ss:[esp+eax+0x25],0x0
0040B273 |> 8D5424 24 lea edx,dword ptr ss:[esp+0x24]
0040B277 |. 8D4C24 20 lea ecx,dword ptr ss:[esp+0x20]
0040B27B |. 52 push edx
0040B27C |. E8 05E50100 call 中原文件.00429786
0040B281 |. 68 7C454400 push 中原文件.0044457C
0040B286 |. 8D4424 1C lea eax,dword ptr ss:[esp+0x1C]
0040B28A |. 68 5C974400 push 中原文件.0044975C
0040B28F |. 50 push eax
0040B290 |. C78424 3C0100>mov dword ptr ss:[esp+0x13C],0x0
0040B29B |. E8 0DE70100 call 中原文件.004299AD
0040B2A0 |. 8B4C24 18 mov ecx,dword ptr ss:[esp+0x18]
0040B2A4 |. 8B5424 20 mov edx,dword ptr ss:[esp+0x20]
0040B2A8 |. 51 push ecx
0040B2A9 |. 52 push edx
0040B2AA |. C68424 380100>mov byte ptr ss:[esp+0x138],0x1
0040B2B2 |. E8 72A40000 call 中原文件.00415729
0040B2B7 |. 83C4 08 add esp,0x8
0040B2BA |. 85C0 test eax,eax
0040B2BC 0F84 0D040000 je 中原文件.0040B6CF ; 这个je要实现----------je jmp
0040B2C2 |. 68 244B4400 push 中原文件.00444B24 ; /Title = "D2009History"
0040B2C7 |. 68 68414400 push 中原文件.00444168 ; |Class = "#32770"
0040B2CC |. FF15 F0644300 call dword ptr ds:[<&USER32.FindWindowA>>; \FindWindowA
0040B2D2 |. 68 288E4400 push 中原文件.00448E28
0040B2D7 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0040B2DB |. E8 A6E40100 call 中原文件.00429786
0040B2E0 |. 8B43 34 mov eax,dword ptr ds:[ebx+0x34]
0040B2E3 |. 8D4C24 10 lea ecx,dword ptr ss:[esp+0x10]
0040B2E7 |. 50 push eax
0040B2E8 |. 68 68434400 push 中原文件.00444368 ; ASCII "%s\Box.exe"
0040B2ED |. 51 push ecx
0040B2EE |. C68424 3C0100>mov byte ptr ss:[esp+0x13C],0x2
0040B2F6 |. E8 588E0100 call 中原文件.00424153
0040B2FB |. 83C4 0C add esp,0xC
0040B2FE |. 8D4C24 14 lea ecx,dword ptr ss:[esp+0x14]
0040B302 |. 68 288E4400 push 中原文件.00448E28
0040B307 |. E8 7AE40100 call 中原文件.00429786
0040B30C |. 8D5424 24 lea edx,dword ptr ss:[esp+0x24]
0040B310 |. B9 41000000 mov ecx,0x41
0040B315 |. 33C0 xor eax,eax
0040B317 |. 8D7C24 24 lea edi,dword ptr ss:[esp+0x24]
0040B31B |. 68 04010000 push 0x104
0040B320 |. 52 push edx
0040B321 |. F3:AB rep stos dword ptr es:[edi]
0040B323 |. 50 push eax
0040B324 |. C68424 3C0100>mov byte ptr ss:[esp+0x13C],0x3
0040B32C |. FFD6 call esi
0040B32E |. 8D4424 24 lea eax,dword ptr ss:[esp+0x24]
0040B332 |. 50 push eax
0040B333 |. FFD5 call ebp
0040B335 |. 48 dec eax
0040B336 |. 78 11 js short 中原文件.0040B349
0040B338 |> 807C04 24 5C /cmp byte ptr ss:[esp+eax+0x24],0x5C
0040B33D |. 74 05 |je short 中原文件.0040B344
0040B33F |. 48 |dec eax
0040B340 |.^ 79 F6 \jns short 中原文件.0040B338
0040B342 |. EB 05 jmp short 中原文件.0040B349
0040B344 |> C64404 25 00 mov byte ptr ss:[esp+eax+0x25],0x0
0040B349 |> 51 push ecx
0040B34A |. 8D5424 14 lea edx,dword ptr ss:[esp+0x14]
0040B34E |. 8BCC mov ecx,esp
0040B350 |. 896424 20 mov dword ptr ss:[esp+0x20],esp
0040B354 |. 52 push edx
0040B355 |. E8 33E10100 call 中原文件.0042948D
0040B35A |. E8 B182FFFF call 中原文件.00403610
0040B35F |. 8B35 D0624300 mov esi,dword ptr ds:[<&KERNEL32.Sleep>] ; kernel32.Sleep
0040B365 |. 83C4 04 add esp,0x4
0040B368 |. 85C0 test eax,eax
0040B36A |. 75 53 jnz short 中原文件.0040B3BF
0040B36C |. 8B4424 10 mov eax,dword ptr ss:[esp+0x10]
0040B370 |. 68 204B4400 push 中原文件.00444B20 ; ASCII "one"
0040B375 |. 68 8A000000 push 0x8A
0040B37A |. 50 push eax
0040B37B |. E8 90E9FFFF call 中原文件.00409D10
0040B380 |. 83C4 0C add esp,0xC
0040B383 |. 85C0 test eax,eax
0040B385 |. 75 38 jnz short 中原文件.0040B3BF
0040B387 |. 68 C8000000 push 0xC8
0040B38C |. FFD6 call esi
0040B38E |. 8B4C24 10 mov ecx,dword ptr ss:[esp+0x10]
0040B392 |. 51 push ecx ; /FileName
0040B393 |. FF15 DC624300 call dword ptr ds:[<&KERNEL32.DeleteFile>; \DeleteFileA
0040B399 |. 68 C8000000 push 0xC8
0040B39E |. FFD6 call esi
0040B3A0 |. 8B5424 10 mov edx,dword ptr ss:[esp+0x10]
0040B3A4 |. 68 204B4400 push 中原文件.00444B20 ; ASCII "one"
0040B3A9 |. 68 8A000000 push 0x8A
0040B3AE |. 52 push edx
0040B3AF |. E8 5CE9FFFF call 中原文件.00409D10
0040B3B4 |. 83C4 0C add esp,0xC
0040B3B7 |. 85C0 test eax,eax
0040B3B9 |. 0F84 CD000000 je 中原文件.0040B48C
0040B3BF |> 8D4424 24 lea eax,dword ptr ss:[esp+0x24]
0040B3C3 |. 68 04010000 push 0x104 ; /BufSize = 104 (260.)
0040B3C8 |. 50 push eax ; |PathBuffer
0040B3C9 |. 6A 00 push 0x0 ; |hModule = NULL
0040B3CB |. FF15 70624300 call dword ptr ds:[<&KERNEL32.GetModuleF>; \GetModuleFileNameA
0040B3D1 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+0x24]
0040B3D5 |. 51 push ecx
0040B3D6 |. FFD5 call ebp
0040B3D8 |. 48 dec eax
0040B3D9 |. 78 11 js short 中原文件.0040B3EC
0040B3DB |> 807C04 24 5C /cmp byte ptr ss:[esp+eax+0x24],0x5C
0040B3E0 |. 74 05 |je short 中原文件.0040B3E7
0040B3E2 |. 48 |dec eax
0040B3E3 |.^ 79 F6 \jns short 中原文件.0040B3DB
0040B3E5 |. EB 05 jmp short 中原文件.0040B3EC
0040B3E7 |> C64404 25 00 mov byte ptr ss:[esp+eax+0x25],0x0
0040B3EC |> 8D5424 24 lea edx,dword ptr ss:[esp+0x24]
0040B3F0 |. 8D4424 14 lea eax,dword ptr ss:[esp+0x14]
0040B3F4 |. 52 push edx
0040B3F5 |. 68 144B4400 push 中原文件.00444B14 ; ASCII "%suser.dll"
0040B3FA |. 50 push eax
0040B3FB |. E8 538D0100 call 中原文件.00424153
0040B400 |. 8B4B 34 mov ecx,dword ptr ds:[ebx+0x34]
0040B403 |. 83C4 0C add esp,0xC
0040B406 |. 8D5424 10 lea edx,dword ptr ss:[esp+0x10]
0040B40A |. 51 push ecx
0040B40B |. 68 88434400 push 中原文件.00444388 ; ASCII "%s\FileEn.exe"
0040B410 |. 52 push edx
0040B411 |. E8 3D8D0100 call 中原文件.00424153
0040B416 |. 83C4 08 add esp,0x8
0040B419 |. 8D4424 14 lea eax,dword ptr ss:[esp+0x14]
0040B41D |. 8BCC mov ecx,esp
0040B41F |. 896424 20 mov dword ptr ss:[esp+0x20],esp
0040B423 |. 50 push eax
省略好多代码:
--------------------------
修改完毕两处:-----启动软件是没有提示了。
0040B8D1 |. 74 62 je short 中原文件.0040B935 ; 这个跳转跳 je --jmp
0040B2BC 0F84 0D040000 je 中原文件.0040B6CF ; 这个je要实现----------je jmp
---------------【-记得以上的每一次操作都保存一下,包括任务1,任务2的过程中,适当的保存方便调试】-------
破文到此是不是就该结束了???????????????
我大声说“NO NO NO NO NO”。。。。。。。。。。。。。。。
当大家修改设置里面的东西的时候,点击确定会有tmd的那个提示,利用我们之前下过的断点;
继续fuck。。。。。。。。。。。。。。
【【友情提示】:最好是之前的都保存好了,然后重新载入进行调试】
按照操作,断在:
00404350 . 64:A1 0000000>mov eax,dword ptr fs:[0]
00404356 . 6A FF push -0x1
00404358 . 68 38384300 push 中原文件.00433838
0040435D . 50 push eax
0040435E . 64:8925 00000>mov dword ptr fs:[0],esp
00404365 . 83EC 08 sub esp,0x8
00404368 . 56 push esi
00404369 . 57 push edi
0040436A . 8BF1 mov esi,ecx
0040436C . 6A 01 push 0x1
0040436E . E8 3C3F0200 call 中原文件.004282AF
00404373 . 8B46 60 mov eax,dword ptr ds:[esi+0x60]
00404376 . 33FF xor edi,edi
00404378 . A3 58974400 mov dword ptr ds:[0x449758],eax
0040437D . 8B4E 5C mov ecx,dword ptr ds:[esi+0x5C]
00404380 . 890D 54974400 mov dword ptr ds:[0x449754],ecx
00404386 . 8A46 64 mov al,byte ptr ds:[esi+0x64]
00404389 . 8A0D 50974400 mov cl,byte ptr ds:[0x449750]
0040438F . 04 41 add al,0x41
00404391 . 3AC1 cmp al,cl
00404393 . 74 05 je short 中原文件.0040439A
00404395 . BF 01000000 mov edi,0x1
0040439A > B9 28974400 mov ecx,中原文件.00449728 ; ASCII "hwC"
0040439F . A2 50974400 mov byte ptr ds:[0x449750],al
004043A4 . E8 E7810000 call 中原文件.0040C590
004043A9 . 8B15 54974400 mov edx,dword ptr ds:[0x449754]
004043AF . B9 28974400 mov ecx,中原文件.00449728 ; ASCII "hwC"
004043B4 . 52 push edx
004043B5 . E8 B67E0000 call 中原文件.0040C270
004043BA . 85FF test edi,edi
004043BC . 0F84 9F000000 je 中原文件.00404461 ; 这个je 跳啊 jmp
004043C2 . 68 98434400 push 中原文件.00444398 ; /Title = "FileProtected"
004043C7 . 68 68414400 push 中原文件.00444168 ; |Class = "#32770"
004043CC . FF15 F0644300 call dword ptr ds:[<&USER32.FindWindowA>>; \FindWindowA
004043D2 . 85C0 test eax,eax
004043D4 . 74 18 je short 中原文件.004043EE
004043D6 . 6A 00 push 0x0 ; /lParam = 0
004043D8 . 6A 00 push 0x0 ; |wParam = 0
004043DA . 6A 12 push 0x12 ; |Message = WM_QUIT
004043DC . 50 push eax ; |hWnd
004043DD . FF15 F8644300 call dword ptr ds:[<&USER32.PostMessageA>; \PostMessageA
004043E3 . 68 C4090000 push 0x9C4 ; /Timeout = 2500. ms
004043E8 . FF15 D0624300 call dword ptr ds:[<&KERNEL32.Sleep>] ; \Sleep
004043EE > 68 288E4400 push 中原文件.00448E28
004043F3 . 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
004043F7 . E8 8A530200 call 中原文件.00429786
004043FC . A1 5C974400 mov eax,dword ptr ds:[0x44975C]
00404401 . 8D4C24 08 lea ecx,dword ptr ss:[esp+0x8]
00404405 . 50 push eax
00404406 . 68 88434400 push 中原文件.00444388 ; ASCII "%s\FileEn.exe"
0040440B . 51 push ecx
0040440C . C74424 24 000>mov dword ptr ss:[esp+0x24],0x0
00404414 . E8 3AFD0100 call 中原文件.00424153
00404419 . 83C4 08 add esp,0x8
0040441C . 8D5424 0C lea edx,dword ptr ss:[esp+0xC]
-------------------------------------------------------------
修改完毕:
004043BC . 0F84 9F000000 je 中原文件.00404461 ; 这个je 跳啊 jmp
一处,咱们总结收工吧。第一次写这么长的破文,还得截图
累啊。。。。。。。。。。。。。
【经验总结】
白菜一棵,但是学习呢就一步步的来,有思路有条理简单的也可以学出乐趣来;发工具总是没有分析过程和思路
来的彻底一些;希望牛牛们如果有时间就或多或少的多说说思路。
1。整个过程中要修改的地方如下:
004036DA . 0F85 A6000000 jnz 中原文件.00403786 不能跳哦,nop掉
00402777 . 0F84 AF000000 je 中原文件.0040282C ; 这个je修改成jmp就行了
0040B8D1 |. 74 62 je short 中原文件.0040B935 ; 这个跳转跳 je --jmp
0040B2BC 0F84 0D040000 je 中原文件.0040B6CF ; 这个je要实现----------je jmp
004043BC . 0F84 9F000000 je 中原文件.00404461 ; 这个je 跳啊 jmp
2、就这些了。。。。。。睡觉去。。。。。。。。。。。。。。。。。
【版权声明】: 本文原创于吾爱破解技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2010年12月10日 1:34:06
-----------------------------------------------------------------------------------------------
语音教程补充:标志位爆破的补充:
下载地址:http://u.115.com/file/t5bb521430
|
-
-
免费评分
-
查看全部评分
|