首页
社区
课程
招聘
ldrloaddll的参数问题
发表于: 2015-10-16 18:49 9808

ldrloaddll的参数问题

2015-10-16 18:49
9808
我在做一个CRackme程序,然后这个程序调用了 ldrloaddll这个函数,我在网上查这个需要四个参数,NTSYSAPI
NTSTATUS
NTAPI

LdrLoadDll(

  IN PWCHAR               PathToFile OPTIONAL,
  IN ULONG                Flags OPTIONAL,
  IN PUNICODE_STRING      ModuleFileName,
  OUT PHANDLE             ModuleHandle );

我这个程序里这四个参数分别是 (直接从堆栈复制出来的)
   00000000
   00000000
   0012FEA0
   0012FE9C

12fea0地址处
0012FEA0  18 00 18 00 FA 39 40 00 D0 88 57 80 D8 1D C1 28  ..?@.袌W€??
0012FEB0  00 00 00 00 00 00 00 00 10 EB C1 28 23 05 00 00  ........肓(#..
0012FEC0  E0 00 92 7C 00 00 92 7C 00 34 92 7C 23 05 00 00  ?抾..抾.4抾#..

(前面两次计算了kernel32.dll字符数,然后乘2,之后存在了这个地址)

12fe9c地址处
0012FE9C  00 00 00 00 18 00 18 00 FA 39 40 00 D0 88 57 80  ......?@.袌W€
0012FEAC  D8 1D C1 28 00 00 00 00 00 00 00 00 10 EB C1 28  ??........肓(
0012FEBC  23 05 00 00 E0 00 92 7C 00 00 92 7C 00 34 92 7C  #..?抾..抾.4抾

然后书上就说因为前面有kernel32.dll的名字,所以你就知道加载的哪个dll了,可是我完全不知道啊。虽然前面是计算了kernel32的字符数,但是这个函数的调用参数里完全没体现出kernel32啊!不知道哪里理解错了,求解释一下。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
004039fa..
UNICODE_STRING的第三个参数指向了字符串
2015-10-16 19:14
0
雪    币: 490
活跃值: (95)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
我把第三个参数指向的内存也复制出来了,也不是字符串地址啊  18是kernel32.dll字符数*2,前面的代码有这样一个计算
2015-10-16 19:19
0
雪    币: 261
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
typedef struct _UNICODE_STRING {
  USHORT  Length;
  USHORT  MaximumLength;
  PWSTR  Buffer;
} UNICODE_STRING ,*PUNICODE_STRING;

这是UNICODE_STRING的结构
你要的字符串在Buffer
2015-10-16 19:22
0
雪    币: 490
活跃值: (95)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
@YUCHENGTONG  不好意思啊,我没看见你写的第一个地址。我明白了,第三个参数是一个结构体,第二个成员才是指向字符串的指针对吧?谢谢你啊
2015-10-16 19:24
0
游客
登录 | 注册 方可回帖
返回
//