首页
社区
课程
招聘
[Anti Virus专题]1.2 - 2.kernel32基地址获得
发表于: 2009-4-10 15:09 68263

[Anti Virus专题]1.2 - 2.kernel32基地址获得

2009-4-10 15:09
68263
收藏
免费 7
支持
分享
最新回复 (86)
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
MZ和内存中是相反的
2009-5-26 14:59
0
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
cmp  word ptr [eax+edx], 4550h;
比如说这里
如果用cmp word ptr [eax+edx],"PE"
"PE"是被编译成5045.-
2009-5-26 15:02
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
53
我用FASM编译的就可以,xfish用的应该是FASM
2009-5-26 15:07
0
雪    币: 186
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
哦,原来是编译器的原因啊,,,,

了解-
2009-5-26 20:54
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
真诚的谢谢楼主细心的工作,你的文章让我加深了理解!
2009-5-31 23:25
0
雪    币: 16
活跃值: (430)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
这个系列不错..学习了
2009-6-17 20:45
0
雪    币: 500
活跃值: (200)
能力值: ( LV13,RANK:270 )
在线值:
发帖
回帖
粉丝
57
第三个最后一个mov eax,[eax+8]有些不太明白
,通过mov eax,[eax],此时eax应该是指向的_LDR_MODULE这个结构吧.
而我们要得到的关于这个结构的BaseAddress的值,而这个值在这个结构的0x18的地方,
所以,应该通过mov eax,[eax+18h]这样来得到吧,
而作者加的是8,最后还注释是那个结构的大小,
所以就迷糊了....
求解释....
2009-7-20 22:47
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
同楼上的疑问,望高手解答
2009-7-20 23:33
0
雪    币: 500
活跃值: (200)
能力值: ( LV13,RANK:270 )
在线值:
发帖
回帖
粉丝
59
[QUOTE=冰雪风谷;658678]第三个最后一个mov eax,[eax+8]有些不太明白
,通过mov eax,[eax],此时eax应该是指向的_LDR_MODULE这个结构吧.
而我们要得到的关于这个结构的BaseAddress的值,而这个值在这个结构的0x18的地方,
所以,应该通过mov eax,[eax+18h]这...[/QUOTE]

写了段代码,自己跟了下,总算明白了。

		.386
		.model flat,stdcall
		option casemap:none
include		windows.inc
include		kernel32.inc
includelib	kernel32.lib
include		user32.inc
includelib	user32.lib

		.data
Caption db	'地址',0
Buffer	db	'地址是%08x',0
Buffer1 db 	256 dup (0)
		.code

start:
	assume fs:nothing	
	mov 	eax,fs:[30h]
	mov 	eax,[eax+0ch]
	mov 	eax,[eax+1ch]
	;mov 	eax,[eax]
	mov 	eax,[eax+8h]
	
	invoke	wsprintf,offset Buffer1,offset Buffer,eax
	invoke 	MessageBox,NULL,addr Buffer1,offset Caption,MB_OK
	invoke 	ExitProcess,NULL
	end 	start
2009-7-21 15:00
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
本人愚昧,还是没看懂为什么是+8而不是+18
2009-7-21 22:48
0
雪    币: 138
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
顶,好文章啊,呵呵,病毒入门
2009-8-4 10:40
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
62
lkd> dt _TEB
nt!_TEB
+0x000 NtTib : _NT_TIB
+0x01c EnvironmentPointer : Ptr32 Void
+0x020 ClientId : _CLIENT_ID
+0x028 ActiveRpcHandle : Ptr32 Void
+0x02c ThreadLocalStoragePointer : Ptr32 Void
+0x030 ProcessEnvironmentBlock : Ptr32 _PEB ;;;;;;;;;;

......省略


我们可以看到TEB结构的0x30偏移处存储的我们的PEB结构的地址。。

然后接下来我们来看PEB结构。

lkd> dt _PEB
nt!_PEB
+0x000 InheritedAddressSpace : UChar
+0x001 ReadImageFileExecOptions : UChar
+0x002 BeingDebugged : UChar
+0x003 SpareBool : UChar
+0x004 Mutant : Ptr32 Void
+0x008 ImageBaseAddress : Ptr32 Void
+0x00c Ldr : Ptr32 _PEB_LDR_DATA
..........省略

我们可以看到PEB结构的0x0c偏移处存储的我们的_PEB_LDR_DATA结构地址。

好到这里我们可以先把获得_PEB_LDR_DATA结构地址的代码写出来。

mov eax, [fs:30h] ;Get Peb
mov eax, [eax+0ch] ;Get _PEB_LDR_DATA


想請問一下這部份
前輩如何知道他是使用fs
而不是其他的呢?
2009-8-24 18:03
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
63
微软定义就是FS

微软定义就是FS

   mov eax, [eax+1ch];Get InInitializationOrderModuleList.Flink, 此时eax指向的是ntdll模块的InInitializationOrderModuleList线性地址。所以我们获得它的下一个则是kernel32.dll
    mov eax, [eax]
    mov eax, [eax+8] ; 8 = sizeof.LIST_ENTRY
    ret

+8不是刚好是基址吗
8 = sizeof.LIST_ENTRY写的很清楚了
mov eax, [eax+1ch]; 此时eax指向的是ntdll模块的InInitializationOrderModuleList线性地址
而不是LIST_ENTRY        InLoadOrderModuleList;            // +0x00
加18H就跑到下面去了
2009-10-20 13:43
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
写的真是太好了
2009-12-25 14:15
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
”分析过kernel32.dll的朋友应该都知道kernel32.dll的块对齐值是00001000h, 并且一般DLL以1M为边界,所以我们可以通过10000h (64k) 作为跨度,“
为什么64K,正好两个字节吗
2009-12-25 14:40
0
雪    币: 38
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
下面这两个结构中标红色的成员是公用的其实就是一个东西,要不一个只有两个指针没别的成员的双链表如何存储数据啊,明白这个就明白为啥是+8了。我也刚懂
nt!_PEB_LDR_DATA
   +0x000 Length           : Uint4B
   +0x004 Initialized      : UChar
   +0x008 SsHandle         : Ptr32 Void
   +0x00c InLoadOrderModuleList : _LIST_ENTRY
   +0x014 InMemoryOrderModuleList : _LIST_ENTRY
   +0x01c InInitializationOrderModuleList : _LIST_ENTRY

   +0x024 EntryInProgress  : Ptr32 Void
typedef struct _LDR_MODULE
{
    LIST_ENTRY        InLoadOrderModuleList;            // +0x00
    LIST_ENTRY        InMemoryOrderModuleList;          // +0x08
    LIST_ENTRY        InInitializationOrderModuleList;  // +0x10

    PVOID             BaseAddress;                      // +0x18
    PVOID             EntryPoint;                       // +0x1c
    ULONG             SizeOfImage;                      // +0x20
    UNICODE_STRING    FullDllName;                      // +0x24
    UNICODE_STRING    BaseDllName;                      // +0x2c
    ULONG             Flags;                            // +0x34
    SHORT             LoadCount;                        // +0x38
    SHORT             TlsIndex;                         // +0x3a
    LIST_ENTRY        HashTableEntry;                   // +0x3c
    ULONG             TimeDateStamp;                    // +0x44
                                                        // +0x48
} LDR_MODULE, *PLDR_MODULE;
2010-1-13 15:21
0
雪    币: 101
活跃值: (88)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
67
以讹传讹的恶果啊。

错误的数据结构大家如果不晕才怪了呢。不知道这个可不可以算作小鱼抄袭的一个证据?
2010-1-13 16:56
0
雪    币: 38
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
其实我想说,不管文章来自哪楼主肯分享我就应该感恩..
我见过的第一个成系列的讲病毒的帖子而且收获很多。
2010-1-13 20:35
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
69
很好,正在学这方面的知识,谢谢了!!
2010-8-26 22:34
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
70
感谢xfish的付出,鄙人收益匪浅!
2010-9-1 23:15
0
雪    币: 227
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
71
这些代码我用了这么久,今天才知道原来是这么回事.
真是醍醐灌顶.
你们怎么知道fs:[0]和fs:[30]是怎么回事的呀?
2010-9-2 17:42
0
雪    币: 354
活跃值: (157)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
72
很显然,除了查资料还能怎么着啊?呵呵。
2010-9-21 20:51
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
73
不错的文章。
2010-9-22 19:49
0
雪    币: 362
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
感谢楼主,学习了!
2010-9-22 23:28
0
雪    币: 133
活跃值: (587)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
75
留名!以后看看
2010-10-11 17:12
0
游客
登录 | 注册 方可回帖
返回
//