【文章标题】: Obsidium V1.3.0.4
【文章作者】:
【下载地址】: 自己搜索下载
【加壳方式】: Obsidium 1.3.0.4 -> Obsidium Software [Overlay]
【编写语言】: VC6.0
【使用工具】: 一蓑烟雨OllyDbg 等等
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
试过了很多的OD都不行,只有一蓑烟雨的OD下 硬件断点才能断下来!
OD F9 运行可以 通过
OB壳对内存有检查,修改内存属性为 REW
搜索 00401000
搜索VC 的特征码: 随便选择 好用就行
00496EB8 >/$ 55 PUSH EBP ; (初始 cpu 选择)
00496EB9 |. 8BEC MOV EBP,ESP
00496EBB |. 6A FF PUSH -1
00496EBD |. 68 40375600 PUSH Screensh.00563740
00496EC2 |. 68 8CC74900 PUSH Screensh.0049C78C ; SE 处理程序安装
00496EC7 |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00496ECD |. 50 PUSH EAX
00496ECE |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00496ED5 |. 83EC 58 SUB ESP,58
在程序中搜到:
0040533B 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00405341 50 PUSH EAX
00405342 64:8925 00000000 MOV DWORD PTR FS:[0],ESP
00405349 83EC 68 SUB ESP,0x68
0040534C 53 PUSH EBX
0040534D 56 PUSH ESI
0040534E 57 PUSH EDI
0040534F 8965 E8 MOV DWORD PTR SS:[EBP-0x18],ESP
00405352 33DB XOR EBX,EBX
00405354 895D FC MOV DWORD PTR SS:[EBP-0x4],EBX
00405357 6A 02 PUSH 0x2
上面几行被偷了
还有IAT 没有显示:
00406000 009F0414
00406004 009F0420
00406008 009F0000
··························这里省略
00406168 009F0294
0040616C 009F02A0
00406170 009F02AC
调向 009F0414
有很多jmp 当 看到 je判断时 je过去 下断 然后继续
知道看到显示 函数地址IAT
知道IAT的流程后 写脚本:
var fi
var fix
var oep
var tmpesp
mov oep,eip
mov tmpesp,esp
mov fi,405ffc
loop:
mov esp,tmpesp
add fi,4
cmp fi,00406174
jae exit
mov fix,[fi]
cmp fix,10000000
jae loop
mov eip,fix
esto
cmp eip,00995003 //此处为 显示函数地址的 左边的地址
jnz loop
mov [fi],eax
jmp loop
exit:
mov eip,oep
mov esp,tmpesp
ret
得到IAT后 复制二进制
重来
粘贴二进制 IAT
修复 代码头
LOADPE IMPORT (注意 import 要切除无用指针)