首页
社区
课程
招聘
[讨论]用OD如何中断DLL真正的起点处?
发表于: 2005-7-29 09:29 8883

[讨论]用OD如何中断DLL真正的起点处?

2005-7-29 09:29
8883
附件:qqlib.rar

在OD选项里设置 事件->系统 中断,看似中断在外壳起点,其实外壳代码早执行过一遍了(你可以查看1000419C这个OEP处代码验证)。后来用SoftICE才看到整个解压处理过程。
以前也碰到过这类情况多次。你们用OD是如何中断DLL到真正的起点的?

另外,用OD脱这个DLL,有个全局变量的初始值得修正一下,否则DLL加载不了,而SoftICE脱没这个问题。感兴趣的可以用OD脱一下。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
可以修改EP处为死循环
2005-7-29 09:48
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
最初由 fly 发布
可以修改EP处为死循环


死循环、插入CC 这些技巧在SoftICE下都好使,但在OD下,我没成功过。你成功过吗?
2005-7-29 10:00
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
可以
用LordPE直接修改偏移2099处为EBFE

保存后用OllyDBG载入
F12      暂停在EP处
1000CE99   EB FE           jmp short 1000CE99 ; <ModuleEntryPoint>
修改为原来的代码就可以继续调试了
2005-7-29 10:12
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
最初由 fly 发布
可以
用LordPE直接修改偏移2099处为EBFE

保存后用OllyDBG载入
F12 暂停在EP处
........


谢谢,成了,原来要按F12 ;)
2005-7-29 10:14
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
入口改为int3,不忽略int3异常,载入一般就断下,然后恢复入口即可
我脱别人给的upack加壳的qq挂机系统的一个dll的时候,不能中断在入口.但是楼主给的这个却能停在入口,真是晕了
2005-7-29 10:27
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
最初由 aki 发布
入口改为int3,不忽略int3异常,载入一般就断下,然后恢复入口即可
我脱别人给的upack加壳的qq挂机系统的一个dll的时候,不能中断在入口.但是楼主给的这个却能停在入口,真是晕了


谢谢,开始用这方法没成功。这次再试一次,竞然又成功了。;)

如不插入CC、jmp eip等技巧,此时看似中断在入口,其实外壳代码己执行了一遍。
2005-7-29 10:43
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
老大可以看一下新版UPack加壳的EP处理
http://dwing.go.nease.net/
手法不错
2005-7-29 11:17
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
9
完全明白了,以前装SofiICE只是用来脱DLL的壳,
看来现在也没必要了,
谢谢
2005-7-29 11:52
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
10
不修改 CC 也可以,  设置 OD break on new module(DLL), F9, 导入第一个系统 DLL 就会被断下.

然后在 77F88069 下个断点, 可以看到 DLL 的加载过程

77F88058    55              PUSH EBP
77F88059    8BEC            MOV EBP,ESP
77F8805B    56              PUSH ESI
77F8805C    57              PUSH EDI
77F8805D    53              PUSH EBX
77F8805E    8BF4            MOV ESI,ESP
77F88060    FF75 14         PUSH DWORD PTR SS:[EBP+14]
77F88063    FF75 10         PUSH DWORD PTR SS:[EBP+10]
77F88066    FF75 0C         PUSH DWORD PTR SS:[EBP+C]
77F88069    FF55 08         CALL DWORD PTR SS:[EBP+8]    ; 这里将进入 DllMain (保证是第一次)
77F8806C    8BE6            MOV ESP,ESI
77F8806E    5B              POP EBX
77F8806F    5F              POP EDI
77F88070    5E              POP ESI
77F88071    5D              POP EBP
77F88072    C2 1000         RETN 10

我的系统是 2K, 其他系统也差不多.  
2005-7-29 12:39
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
hying的壳都是先走一个地方执行一段代码,再执行oep处的代码

下断点ntdll!LdrpCallInitRoutine就可以看到需要执行的东西

在我的机器是这个地址

77F830D3    55              PUSH EBP
77F830D4    8BEC            MOV EBP,ESP
77F830D6    56              PUSH ESI
77F830D7    57              PUSH EDI
77F830D8    53              PUSH EBX
77F830D9    8BF4            MOV ESI,ESP
77F830DB    FF75 14         PUSH DWORD PTR [EBP+14]
77F830DE    FF75 10         PUSH DWORD PTR [EBP+10]
77F830E1    FF75 0C         PUSH DWORD PTR [EBP+C]
77F830E4    FF55 08         CALL [EBP+8]                             ; main_dat.007D5A42
77F830E7    8BE6            MOV ESP,ESI
77F830E9    5B              POP EBX
77F830EA    5F              POP EDI
77F830EB    5E              POP ESI
77F830EC    5D              POP EBP
77F830ED    C2 1000         RETN 10

传神外挂的hying壳是先执行需要初始化的代码
77F830E4    FF55 08         CALL [EBP+8]                             ; main_dat.007D5A42

007D5A42                         55              PUSH EBP
007D5A43                         8BEC            MOV EBP,ESP
007D5A45                         60              PUSHAD
007D5A46                         E8 04000000     CALL 007D5A4F
007D5A4B                         0050 3D         ADD [EAX+3D],DL
007D5A4E                         005B 8B         ADD [EBX-75],BL
007D5A51                         1B03            SBB EAX,[EBX]
007D5A53                         5D              POP EBP
007D5A54                         0881 EB081D40   OR [ECX+401D08EB],AL
007D5A5A                         00E8            ADD AL,CH
007D5A5C                         0A00            OR AL,[EAX]
007D5A5E                         0000            ADD [EAX],AL

再执行ep代码
<ModuleEntryPoint> 007ED543     /E9 00000000     JMP 007ED548
007ED548                        \60              PUSHAD
007ED549                         E8 14000000     CALL 007ED562
007ED54E                         5D              POP EBP
007ED54F                         81ED 00000000   SUB EBP,0
007ED555                         6A 45           PUSH 45
007ED557                         E8 A3000000     CALL 007ED5FF
007ED55C                         68 00000000     PUSH 0
007ED561                         E8 5861E97D     CALL 7E6836BE
007ED566                         7B FE           JPO SHORT 007ED566

2个地址不一样,所以下断点在ep处是拦不住的,

可是qqlib 2次都是执行ep代码,所以下断点在ep处可以停下

77F830E4    FF55 08         CALL [EBP+8]                             ;1000CE99
<ModuleEntryPoint> 1000CE99      60              PUSHAD

exe文件的情况
用peditor,在directory里的tls table
CALL RtlImageDirectoryEntryToData
MOV ESI,[EAX+C]
MOV EAX,[ESI]
EAX就是初始化代码地址
2005-7-29 15:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谁能写一个QQLIB.DLL的脱壳教程?小弟我学一下
2005-7-29 22:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
真的是基础太弱啊。。。郁闷
2005-7-29 23:28
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
14
先从其他压缩壳开始学吧
跟着教程练习

UPack不难,等你练习好其他壳,这个自然就能脱了
2005-7-29 23:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
版主那有菜鸟学脱壳的文章呀.
2005-7-30 20:44
0
游客
登录 | 注册 方可回帖
返回
//