Obsidium 1.1.1.4 -> Obsidium Software [Overlay]脱壳`还没完成`请各位指点一下`谢谢
【作者大名】shahuo
【作者邮箱】lovekelly2@163.com
【作者主页】
http://www.chinadfcg.com
【使用工具】Peid,olldbg
【操作系统】Windows XP
【软件名称】某某外挂`最新版
【下载地址】
http://bywg.cngamer.com/singlesetup380.exe
【软件大小】3.07 MB
【加壳方式】Obsidium 1.1.1.4 -> Obsidium Software [Overlay]
【软件简介】
某某外挂
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【内容】
【脱壳过程】:
一、寻找OEP、Dump进程
老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。忽略除了“整数被0除”之外的所有其他异常选项。
009CC000 > /EB 02 JMP SHORT PYCQ.009CC004 **进入OD后停在这
009CC002 |0C 68 OR AL,68
009CC004 \E8 3F1D0000 CALL PYCQ.009CDD48
按F9运行
9次异常----------------------------------------------------
003A0AF7 F7F0 DIV EAX第1次异常
003A4D55 F7F0 DIV EAX第2次异常
003A50F7 F7F0 DIV EAX第3次异常
003A524D F7F0 DIV EAX第4次异常 输入表处理
003A35D9 F7F0 DIV EAX第5次异常
003A398D F7F0 DIV EAX第6次异常
003A35D9 F7F0 DIV EAX第7次异常
003A398D F7F0 DIV EAX第8次异常
009CD818 F7F0 DIV EAX第9次异常
OK,当第5次003A35D9时Ctrl+G003a524d(第4次异常)到达后Ctrl+F 搜索命令:test word ptr ds:[esi],20
代码:--------------------------------------------------------------------------------
003A6254 66:F706 2000 TEST WORD PTR DS:[ESI],20
记下这个:003A6254 ◆ 这一步为下面的修复输入表提供点方便。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
看看009CD818处第9次异常的堆栈:
0012FF88 0012FFE0 指针到下一个 SEH 记录
0012FF8C 009CD84C SE 句柄 此处下断
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
代码:--------------------------------------------------------------------------------
009CD84C C8 000000 ENTER 0,0 //断在此处
--------------------------------------------------------------------------------
Ctrl+F 在当前位置下搜索命令:mov dword ptr ds:[eax+0B8],edx 在009CD8D9处
代码:--------------------------------------------------------------------------------
009CD8D9 8990 B8000000 MOV DWORD PTR DS:[EAX+B8],EDX
看看EDX=009CDB78
--------------------------------------------------------------------------------
Ctrl+G:009CDB78 下断,F9运行,断下
代码:--------------------------------------------------------------------------------
009CDB78 E8 B7000000 CALL PYCQ.009CDC34 F7 进
009CDB7D DD ??? ; 未知命令
009CDB7E 8DF7 LEA ESI,EDI ; 非法使用寄存器
009CDB80 9F LAHF
--------------------------------------------------------------------------------
009CDC34 F9 STC 到这里
009CDC35 72 01 JB SHORT PYCQ.009CDC38 跳
009CDC38 60 PUSHAD
009CDC39 F8 CLC
009CDC3A 73 01 JNB SHORT PYCQ.009CDC3D 跳
009CDC3C FD STD
009CDC3D 836C24 20 05 SUB DWORD PTR SS:[ESP+20],5
009CDC42 8B5C24 20 MOV EBX,DWORD PTR SS:[ESP+20]
009CDC46 F9 STC
009CDC47 72 02 JB SHORT PYCQ.009CDC4B 跳
009CDC49 D308 ROR DWORD PTR DS:[EAX],CL
009CDC4B C603 91 MOV BYTE PTR DS:[EBX],91
009CDC4E F8 CLC
009CDC53 C743 01 CA29D28>MOV DWORD PTR DS:[EBX+1],8ED229CA
009CDC5A F9 STC
009CDC5B 72 03 JB SHORT PYCQ.009CDC60 跳
009CDC66 /72 05 JB SHORT PYCQ.009CDC6D 跳
009CDC75 /72 04 JB SHORT PYCQ.009CDC7B 跳
009CDC82 /73 04 JNB SHORT PYCQ.009CDC88 跳
009CDC89 /73 01 JNB SHORT PYCQ.009CDC8C 跳
009CDC92 /EB 01 JMP SHORT PYCQ.009CDC95 跳
009CDC95 83EA 04 SUB EDX,4 到这
009CDC98 ^ 0F85 D4FFFFFF JNZ PYCQ.009CDC72 回跳
009CDC9E 61 POPAD F4下
009CDC9F C3 RETN 返回
009CDB78 /EB 01 JMP SHORT PYCQ.009CDB7B (返回到这大家看看原来的009CDB78和这个是不是变了)`于是Ctrl+F 在 当前位置下 搜索命令: jmp edi
009CDC12 FFE7 JMP EDI 找到这里,F2再下断了,F9运行 跳
003AB52A E8 00000000 CALL 003AB52F F7进
003AB52F EB 03 JMP SHORT 003AB534 跳
003AB531 BE 42F15DEB MOV ESI,EB5DF142
003AB535 /EB 03 JMP SHORT 003AB53A 跳
003AB540 /EB 02 JMP SHORT 003AB544 跳
003AB54A /EB 03 JMP SHORT 003AB54F 跳
003AB552 /EB 02 JMP SHORT 003AB556 跳
003AB55D /EB 01 JMP SHORT 003AB560 跳
003AB566 /EB 04 JMP SHORT 003AB56C 跳
003AB56F /EB 03 JMP SHORT 003AB574 跳
003AB57A /EB 03 JMP SHORT 003AB57F 跳
003AB581 /EB 02 JMP SHORT 003AB585 跳
003AB58B /EB 02 JMP SHORT 003AB58F 跳
003AB58F 61 POPAD 终于看到这个了
003AB590 EB 01 JMP SHORT 003AB593
003AB593 9D POPFD :)
003AB594 EB 02 JMP SHORT 003AB598
003AB598 /EB 02 JMP SHORT 003AB59C
003AB59C - E9 B62A0600 JMP PYCQ.0040E057 **跳向OEP!
0040E057 64 DB 64 ; CHAR 'd'
0040E058 A1 DB A1
0040E059 00 DB 00
0040E05A 00 DB 00
0040E05B 00 DB 00
0040E05C 00 DB 00
0040E05D 50 DB 50 ; CHAR 'P'
0040E05E 64 DB 64 ; CHAR 'd'
0040E05F 89 DB 89
0040E060 25 DB 25 ; CHAR '%'
0040E061 00 DB 00
0040E062 00 DB 00
0040E063 00 DB 00
0040E064 00 DB 00
0040E065 83 DB 83
0040E066 EC DB EC
0040E067 58 DB 58 ; CHAR 'X'
0040E068 53 DB 53 ; CHAR 'S'
0040E069 56 DB 56 ; CHAR 'V'
清除分式
0040E057 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0040E05D 50 PUSH EAX
0040E05E 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0040E065 83EC 58 SUB ESP,58
0040E068 53 PUSH EBX
0040E069 56 PUSH ESI
0040E06A 57 PUSH EDI
0040E06B 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
0040E06E FF15 88924200 CALL DWORD PTR DS:[429288]
0040E074 33D2 XOR EDX,EDX
0040E076 8AD4 MOV DL,AH
0040E078 8915 C89B4300 MOV DWORD PTR DS:[439BC8],EDX
0040E07E 8BC8 MOV ECX,EAX
0040E080 81E1 FF000000 AND ECX,0FF
0040E086 890D C49B4300 MOV DWORD PTR DS:[439BC4],ECX
下面分析一下程序并补上Stolen Code。
到这里我不会补上Stolen Code。`哈`请各位指点一下`谢谢
另外FIY大侠可以写篇补上Stolen Code的教学吗。
我在加密解密第2版没找到这样的教学
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法