好友
阅读权限40
听众
最后登录1970-1-1
|
Squn
发表于 2008-3-28 19:49
[]///// 本来准备做成动画的,后来就变成文章了。。。
///// 大家好 我是Squn
///// 今天给大家做的教程是 QQ第六感V3.7的破解教程
(包括去掉弹网页)
///// 首先 我们PEID查壳后发现是
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
///// 这一种壳的脱壳方法我早就做过动画了
///// 而且上网一搜一大堆 :)
///// 我们OD载入Unpack.exe(已脱壳的程序) 查找字符串↓ 这是关键
超级字串参考, 项目 121
地址=00406C98
反汇编=PUSH Unpack.0043DEA8
文本字串=您好,谢谢您使用“QQ第六感”,本软件为共享软件,您现在使用的是未注册版本。\n\n未注册版本监听只能得到QQ前五位,注册后可无限制使用所有功能,并可终身免费使用后续版本。\n\n为了您能更好的使用和对作者后续开发的支持,请您注册!\n\n注册用户可通过老版本的注册码向作者换p弓
///// 双击进去
00406C88 E8 7FACFFFF CALL Unpack.0040190C ; ///// 传说中的关键CALL 回车进去
00406C8D 84C0 TEST AL,AL
00406C8F 75 13 JNZ SHORT Unpack.00406CA4 ; ///// 关键跳转,但是单纯修改这个跳转是无效的、
00406C91 6A 40 PUSH 40
00406C93 68 BCDF4300 PUSH Unpack.0043DFBC ; 欢迎注册!
00406C98 68 A8DE4300 PUSH Unpack.0043DEA8 ; 您好,谢谢您使用“QQ第六感”,本软件为共享软件,您现在使用的是未注册版本。\n\n未注册版本监听只能得到QQ前五位,注册后可无限制使用所有功能,并可终身免费使用后续版本。\n\n为了您能更好的使用和对作者后续开发的支持,请您注册!\n\n注册用户可通过老版本的注册码向作
///// 进去后代码是
0040190C 51 PUSH ECX
0040190D 56 PUSH ESI
0040190E 8BF1 MOV ESI,ECX
00401910 FF76 28 PUSH DWORD PTR [ESI+28]
00401913 8D46 04 LEA EAX,[ESI+4]
00401916 FF76 24 PUSH DWORD PTR [ESI+24]
00401919 83EC 1C SUB ESP,1C
0040191C 8BCC MOV ECX,ESP
///// 我们在 0040190C 处下 //硬件执行断点//
///// 《《 重新来
///// F9运行
///// 就断在
0040190C 51 PUSH ECX
0040190D 56 PUSH ESI ; Unpack.0044E64C
0040190E 8BF1 MOV ESI,ECX
///// F8单步往下跟
0040190C 51 PUSH ECX
0040190D 56 PUSH ESI
0040190E 8BF1 MOV ESI,ECX
00401910 FF76 28 PUSH DWORD PTR [ESI+28]
00401913 8D46 04 LEA EAX,[ESI+4]
00401916 FF76 24 PUSH DWORD PTR [ESI+24]
00401919 83EC 1C SUB ESP,1C
0040191C 8BCC MOV ECX,ESP
0040191E 896424 28 MOV [ESP+28],ESP
00401922 50 PUSH EAX
00401923 E8 C2FFFFFF CALL Unpack.004018EA
00401928 8BCE MOV ECX,ESI
0040192A E8 59FFFFFF CALL Unpack.00401888
0040192F 5E POP ESI ; Unpack.00401844
00401930 59 POP ECX ; Unpack.00401844
00401931 C3 RETN
///// ↑ 看如上代码 会发现
0040192A E8 59FFFFFF CALL Unpack.00401888
///// 这一个CALL要进去看看有什么东西了。。。
///// 我们回车进去 代码如下 ↓
00401888 6A 08 PUSH 8
0040188A B8 DF814300 MOV EAX,Unpack.004381DF
0040188F E8 6D470200 CALL Unpack.00426001
00401894 8BF1 MOV ESI,ECX
00401896 8365 FC 00 AND DWORD PTR [EBP-4],0
0040189A 8D45 F0 LEA EAX,[EBP-10]
0040189D 50 PUSH EAX
0040189E 8D45 EC LEA EAX,[EBP-14]
004018A1 50 PUSH EAX
004018A2 83EC 1C SUB ESP,1C
004018A5 8D45 08 LEA EAX,[EBP+8]
004018A8 8BCC MOV ECX,ESP
004018AA 8965 F0 MOV [EBP-10],ESP
004018AD 50 PUSH EAX
004018AE E8 92FFFFFF CALL Unpack.00401845
004018B3 8BCE MOV ECX,ESI
004018B5 E8 8AFCFFFF CALL Unpack.00401544
004018BA 8B45 EC MOV EAX,[EBP-14] ; Unpack.0040F616
004018BD 3306 XOR EAX,[ESI]
004018BF 8B4D F0 MOV ECX,[EBP-10]
004018C2 33C8 XOR ECX,EAX
004018C4 3B45 24 CMP EAX,[EBP+24]
004018C7/75 09 JNZ SHORT Unpack.004018D2 ; ///// 这个跳到清零那里 我们NOP
004018C9|3B4D 28 CMP ECX,[EBP+28]
004018CC|75 04 JNZ SHORT Unpack.004018D2 ; ///// 这个也跳到清零那里 NOP
004018CE|B3 01 MOV BL,1
004018D0|EB 02 JMP SHORT Unpack.004018D4
004018D2\32DB XOR BL,BL ; ///// 这里清零了
004018D4 6A 00 PUSH 0
004018D6 6A 01 PUSH 1
004018D8 8D4D 08 LEA ECX,[EBP+8]
004018DB E8 C3F8FFFF CALL Unpack.004011A3
004018E0 8AC3 MOV AL,BL
004018E2 E8 B9470200 CALL Unpack.004260A0
004018E7 C2 2400 RETN 24
///// 修改后 代码如下 ↓
004018C7 90 NOP ; ///// 这个跳到清零那里 我们NOP
004018C8 90 NOP
004018C9 3B4D 28 CMP ECX,[EBP+28]
004018CC 90 NOP ; ///// 这个也跳到清零那里 NOP
004018CD 90 NOP
004018CE B3 01 MOV BL,1
004018D0 EB 02 JMP SHORT Unpack.004018D4
004018D2 32DB XOR BL,BL ; ///// 这里清零了
///// 右键复制所有修改 保存文件为1.exe
///// 现在呢,已经算是爆破完毕了 但是还有一个问题!!
///// 它弹网页。。。
///// 那么 下面就来搞定这里
///// 右键载入1.exe
///// 下Command:bp ShellExecuteA F9运行程序
///// 断在
7D611138 > 8BFF MOV EDI,EDI ; USER32.SendMessageA
7D61113A 55 PUSH EBP
7D61113B 8BEC MOV EBP,ESP
7D61113D 83EC 3C SUB ESP,3C
7D611140 8B45 08 MOV EAX,[EBP+8]
7D611143 8365 E4 00 AND DWORD PTR [EBP-1C],0
///// 堆栈窗口信息为:
0012F8AC00406E6B /CALL 到 ShellExecuteA 来自 Unpack1.00406E65
0012F8B000E00D38 |hWnd = 00E00D38 ('QQ第六感V3.7(已注册)',class='#32770',parent=00C90C3E)
0012F8B40043DE80 |Operation = "open"
0012F8B80043DE88 |FileName = "http://www.v2233.com/?399"
0012F8BC0043B769 |Parameters = ""
0012F8C00043B769 |DefDir = ""
0012F8C400000006 \IsShown = 6
///// 我们反汇编跟随→00406E6B
///// 到了这里 ↓
00406E4F 6A 06 PUSH 6
00406E51 B8 69B74300 MOV EAX,Unpack1.0043B769
00406E56 50 PUSH EAX ; Unpack1.0043B769
00406E57 50 PUSH EAX ; Unpack1.0043B769
00406E58 68 88DE4300 PUSH Unpack1.0043DE88 ; ASCII "http://www.v2233.com/?399"
00406E5D 68 80DE4300 PUSH Unpack1.0043DE80 ; ASCII "open"
00406E62 FF76 20 PUSH DWORD PTR [ESI+20]
00406E65 FF15 14F34700CALL [<&shell32.ShellExecuteA>] ; shell32.ShellExecuteA
00406E6B 33C0 XOR EAX,EAX ; Unpack1.0043B769
///// 我们把这几行 给NOP掉 ↓
00406E4F 6A 06 PUSH 6
00406E51 B8 69B74300 MOV EAX,Unpack1.0043B769
00406E56 50 PUSH EAX ; Unpack1.0043B769
00406E57 50 PUSH EAX ; Unpack1.0043B769
00406E58 68 88DE4300 PUSH Unpack1.0043DE88 ; ASCII "http://www.v2233.com/?399"
00406E5D 68 80DE4300 PUSH Unpack1.0043DE80 ; ASCII "open"
00406E62 FF76 20 PUSH DWORD PTR [ESI+20]
00406E65 FF15 14F34700CALL [<&shell32.ShellExecuteA>] ; shell32.ShellExecuteA
///// 就到这里 谢谢。。[/hide] |
|