【文章标题】: 笨鸟学破解外挂(第一节脱壳)
【文章作者】: 好学者
【作者邮箱】: cehoo@126.com
【作者主页】: www.kk831.com
【作者QQ号】: 932093
【软件名称】: 泡泡刷点券外
【软件大小】: 140K
【下载地址】: 百度搜索
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszl
【保护方式】: 简单壳UPX
【编写语言】: Microsoft Visual Basic 5.0 / 6.
【使用工具】: peid0.92,OD,importREC,
【操作平台】: XP
【软件介绍】: 该软件可以在泡泡堂刷点卷!
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
因为我们是菜鸟,在破解之前,先了解以前几个重点内容:
软件介绍:侦壳工具:peid0.92 调试修改工具:OD 输入表修复工具:importREC
壳的简介:壳是软件编写者防止软件信息被人篡改或被破解,加的一段保护代码,同时壳分为两种:一为压缩壳,二为加密壳.
UPX壳的说明:UPX是一种压缩壳,强度很低!
技术要点:在用OD调式过程中,只能往前跳,不能往回跳.如果遇到往回跳,在下一行(非空代码)按F4,或鼠标右键:断点→运行所选!
下面我们拿出OD调试利器,载入:泡泡刷点券外程序.
00457B40 > 60 PUSHAD (压栈)→UPX壳的入口点
00457B41 BE 00B04300 MOV ESI,泡泡刷点.0043B000
00457B46 8DBE 0060FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC6000]
00457B4C 57 PUSH EDI
00457B4D 83CD FF OR EBP,FFFFFFFF
00457B50 EB 10 JMP SHORT 泡泡刷点.00457B62 .................. 跳向457B62
00457B52 90 NOP
00457B53 90 NOP
00457B54 90 NOP
00457B55 90 NOP
00457B56 90 NOP
00457B57 90 NOP
00457B58 8A06 MOV AL,BYTE PTR DS:[ESI]
00457B5A 46 INC ESI
00457B5B 8807 MOV BYTE PTR DS:[EDI],AL
00457B5D 47 INC EDI
00457B5E 01DB ADD EBX,EBX
00457B60 75 07 JNZ SHORT 泡泡刷点.00457B69
00457B62 8B1E MOV EBX,DWORD PTR DS:[ESI]...................来到这里
00457B64 83EE FC SUB ESI,-4
00457B67 11DB ADC EBX,EBX
00457(B69) ^ 72 ED JB SHORT 泡泡刷点.00457(B58)..................向上跳 不能让它回跳(B58跟B69对比)
00457B6B B8 01000000 MOV EAX,1...........................在这里单击鼠标,再按键盘F4键
00457B70 01DB ADD EBX,EBX
00457B72 75 07 JNZ SHORT 泡泡刷点.00457B7B
00457B74 8B1E MOV EBX,DWORD PTR DS:[ESI]
00457B76 83EE FC SUB ESI,-4
00457B79 11DB ADC EBX,EBX
00457B7B 11C0 ADC EAX,EAX
00457B7D 01DB ADD EBX,EBX
00457B7F ^ 73 EF JNB SHORT 泡泡刷点.00457B70
00457B81 75 09 JNZ SHORT 泡泡刷点.00457B8C
00457B83 8B1E MOV EBX,DWORD PTR DS:[ESI]
00457B85 83EE FC SUB ESI,-4
00457B88 11DB ADC EBX,EBX
00457B8A ^ 73 E4 JNB SHORT 泡泡刷点.00457B70
00457B8C 31C9 XOR ECX,ECX
00457B8E 83E8 03 SUB EAX,3
00457B91 72 0D JB SHORT 泡泡刷点.00457BA0
00457B93 C1E0 08 SHL EAX,8
00457B96 8A06 MOV AL,BYTE PTR DS:[ESI]
00457B98 46 INC ESI
00457B99 83F0 FF XOR EAX,FFFFFFFF
00457B9C 74 74 JE SHORT 泡泡刷点.00457C12..........这是一个大的跳转,按回车键到达457C12
00457B9E 89C5 MOV EBP,EAX
00457BA0 01DB ADD EBX,EBX
省略代码
00457C12 5E POP ESI ; 泡泡刷点.00401000 来到这里
00457C13 8DBE 00500500 LEA EDI,DWORD PTR DS:[ESI+55000]
00457C19 8B07 MOV EAX,DWORD PTR DS:[EDI]
00457C1B 09C0 OR EAX,EAX
00457C1D 74 45 JE SHORT 泡泡刷点.00457C64........这是一个大的跳转,按回车键到达457C64
00457C1F 8B5F 04 MOV EBX,DWORD PTR DS:[EDI+4]
00457C22 8D8430 C8CB0500 LEA EAX,DWORD PTR DS:[EAX+ESI+5CBC8]
00457C29 01F3 ADD EBX,ESI
00457C2B 50 PUSH EAX
00457C2C 83C7 08 ADD EDI,8
00457C2F FF96 04CC0500 CALL DWORD PTR DS:[ESI+5CC04]
00457C35 95 XCHG EAX,EBP
00457C36 8A07 MOV AL,BYTE PTR DS:[EDI]
00457C38 47 INC EDI
00457C39 08C0 OR AL,AL
00457C3B ^ 74 DC JE SHORT 泡泡刷点.00457C19
00457C3D 89F9 MOV ECX,EDI
00457C3F 79 07 JNS SHORT 泡泡刷点.00457C48
00457C41 0FB707 MOVZX EAX,WORD PTR DS:[EDI]
00457C44 47 INC EDI
00457C45 50 PUSH EAX
00457C46 47 INC EDI
00457C47 B9 5748F2AE MOV ECX,AEF24857
00457C4C 55 PUSH EBP
00457C4D FF96 08CC0500 CALL DWORD PTR DS:[ESI+5CC08]
00457C53 09C0 OR EAX,EAX
00457C55 74 07 JE SHORT 泡泡刷点.00457C5E
00457C57 8903 MOV DWORD PTR DS:[EBX],EAX
00457C59 83C3 04 ADD EBX,4
00457C5C ^ EB D8 JMP SHORT 泡泡刷点.00457C36
00457C5E FF96 0CCC0500 CALL DWORD PTR DS:[ESI+5CC0C]
00457C64 61 POPAD ..............................来到这里 upx壳的特征点
00457C65 - E9 D295FAFF JMP 泡泡刷点.0040123C...............跳向程序的oep(原始入口点)解压完成
00457C6A 0000 ADD BYTE PTR DS:[EAX],AL
00401236 - FF25 A0104000 JMP DWORD PTR DS:[4010A0] ; MSVBVM60.ThunRTMain
0040123C 68 508A4100 PUSH 泡泡刷点.00418A50 ; 哈,到达程序的OEP了可以dump了(把壳脱掉,下载无壳的原程序)
00401241 E8 F0FFFFFF CALL 泡泡刷点.00401236 ; JMP to MSVBVM60.ThunRTMain
00401246 0000 ADD BYTE PTR DS:[EAX],AL
00401248 0000 ADD BYTE PTR DS:[EAX],AL
0040124A 0000 ADD BYTE PTR DS:[EAX],AL
到这里脱壳就完成一部分了!下一步:
修复程序的输入表了使用侦壳工具为peid0.92C,这是最好用的输入表修复工具.
1、运行加壳的程序,在importREC的获取激活的进程中选择泡泡刷点券外挂,
2、在IAT所需的信息OEP种填写我们找的的OEP 123C,再单击自动搜索IAT,RAV 和大小已经自动找到了.
3、再单击获取输入表,输入表显示正确,再单击修复抓取得文件,选择我们刚用ollydbg, DUMP出来的文件。
4、再运行程序,已经可以正常运行了,再次侦壳原来是Microsoft Visual Basic 5.0 / 6.0编写的程序。
5、到这里就脱壳全部完成了!
第二节我们要学习的是找注册码和爆破这个外挂!
补:非空代码--这我也不懂是什么意思,还有为什么要在非空代码下按F4,运行所选...这请高手指点一下!!!!!
--------------------------------------------------------------------------------
【经验总结】
这课的内容,非常的简单,先了解各种脱壳所需的基本知识:壳的作用,壳的种类,脱壳所需的软件.脱壳过程中的要点.我觉的
比较适合新手学习和参考!因为这节的内容比较简单!适合入门级的学者!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年04月17日 13:21:37
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)