[菜菜打杂]笨笨菜菜脱壳练手一之Aspack212b
【破解作者】 EasyStudy
【作者邮箱】 PhantomNet@163.com
【使用工具】 ODICE,LordPE,ImprotREC16F
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Aspack212b标准加壳的win98记事本程序
【加壳方式】 Aspack212b标准加壳
【破解声明】 我是只菜菜鸟,技术不高给新手和想学脱壳的给个示范,希望共同学习!
声明:我是在大大们的基础资料上学习的,谢谢大大们!
1.代码分析:
//OD进入在这里:
004A3001 > 90 NOP
004A3002 60 PUSHAD //看到压载..一定有POPAD..
004A3003 E8 03000000 CALL nopad.004A300B //我们从这里下手..
004A3008 - E9 EB045D45 JMP 45A734F8
004A300D 55 PUSH EBP
004A300E C3 RETN //但是这里就返回了程序运行了..
2.F7跟进来看:
004A300B 5D POP EBP ; nopad.004A3008
004A300C 45 INC EBP
004A300D 55 PUSH EBP
004A300E C3 RETN
返回....没看到POPAD..不管继续F7
3.F7跟到
004A300F E8 01000000 CALL nopad.004A3015
004A3014 EB 5D JMP SHORT nopad.004A3073
004A3016 BB ECFFFFFF MOV EBX,-14
004A301B 03DD ADD EBX,EBP
004A301D 81EB 00300A00 SUB EBX,0A3000
004A3023 83BD 22040000 0>CMP DWORD PTR SS:[EBP+422],0
004A302A 899D 22040000 MOV DWORD PTR SS:[EBP+422],EBX
004A3030 0F85 65030000 JNZ nopad.004A339B
004A3036 8D85 2E040000 LEA EAX,DWORD PTR SS:[EBP+42E]
一整大段...哈哈....我们往下找找看有没有POPAD
没看到RETN都是这段代码的
004A338D 83C6 14 ADD ESI,14
004A3390 8B95 22040000 MOV EDX,DWORD PTR SS:[EBP+422]
004A3396 ^ E9 EBFEFFFF JMP nopad.004A3286
004A339B B8 CC100000 MOV EAX,10CC //这里的10CC不是OEP吗??
004A33A0 50 PUSH EAX
004A33A1 0385 22040000 ADD EAX,DWORD PTR SS:[EBP+422]
004A33A7 59 POP ECX
004A33A8 0BC9 OR ECX,ECX
004A33AA 8985 A8030000 MOV DWORD PTR SS:[EBP+3A8],EAX
004A33B0 61 POPAD //这里有个POPAD...哈哈
004A33B1 75 08 JNZ SHORT nopad.004A33BB
004A33B3 B8 01000000 MOV EAX,1
004A33B8 C2 0C00 RETN 0C
我们在这里看到了返回....
在004A339B下断点..SHIFT+F9来到...再F8跟到:
004A33BB 68 CC104000 PUSH nopad.004010CC
004A33C0 C3 RETN //这里一下就返回到了OEP....
看到了OEP了吧...嘿嘿...先把程序DUMP出来...
004010CC 55 PUSH EBP
004010CD 8BEC MOV EBP,ESP
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 FF15 E4634000 CALL DWORD PTR DS:[4063E4] ; kernel32.GetCommandLineA
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
004010DF 75 1B JNZ SHORT nopad.004010FC
004010E1 56 PUSH ESI
004010E2 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; USER32.CharNextA
004010E8 8BF0 MOV ESI,EAX
004010EA 8A00 MOV AL,BYTE PTR DS:[EAX]
004010EC 84C0 TEST AL,AL
004010EE 74 04 JE SHORT nopad.004010F4
004010F0 3C 22 CMP AL,22
004010F2 ^ 75 ED JNZ SHORT nopad.004010E1
004010F4 803E 22 CMP BYTE PTR DS:[ESI],22
004010F7 75 15 JNZ SHORT nopad.0040110E
004010F9 46 INC ESI
004010FA EB 12 JMP SHORT nopad.0040110E
004010FC 3C 20 CMP AL,20
004010FE 7E 0E JLE SHORT nopad.0040110E
4.用LOADPE把程序DUMP.再用IMPREC把IAT表修正搞定....
[课程]Linux pwn 探索篇!