能力值:
( LV2,RANK:10 )
|
-
-
2 楼
Address 指向的地址等于 MyNtOpenProcess
应该是个HOOK
应该是个 SSDT HOOK NtOpenProcess
给分
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不好意思哈,我还是没弄明白,我想问ULONG*是什么意思?
如果按照你的解答为什么不直接写成*Address=MyNtOpenProcess ?
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
C语言都还没弄明白 就学人弄驱动了
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这也是我学习C语言的一种方式,有何不可的?
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
Address的定义应该是这样的
PVOID Address;
(ULONG*)Address //转换成ULONG的指针
(ULONG)MyNtOpenProcess;//MyNtOpenProcess是函数,意思就是函数的地址转换成ULONG
也就是用Address指针指向MyNtOpenProcess函数
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
*((ULONG*)Address) = (ULONG)MyNtOpenProcess
MyNtOpenProcess 是一个指针,这个指针就是指向MyNtOpenProcess函数的首地址的。
(ULONG)MyNtOpenProcess 将这个指针强制转换成一个ULONG值,现在你可以把它当成一个普通的ULONG值了来处理了,比如加减乘除什么的。当然这里的转换只是起一个过渡作用。
Address 这个应该也是一个函数的指针,但它是什么类型的我们不知道,你想为它赋值,就需要强制转换为一个你准备接收什么类型的类型。
(ULONG*)Address这句就是将这个函数的指针强制转换为一个ULONG型的指针 ULONG*。
*((ULONG*)Address) 然后再加个括弧和*了,就是取这个ULONG指针内的值了。
*((ULONG*)Address) = (ULONG)MyNtOpenProcess 然后将前面(MyNtOpen.....)强制转换的ULONG值放到后面的*((ULONG*)...) 这个地址中去。。这样的话,Address这个指针内,指向的地址就是MyNtOpenProcess了。。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
C语言的指针标准表达式
还什么C++!!!
对了,还有类型转换
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
请问ULONG*是什么意思? (ULONG*)Address和(ULONG)Address有什么不同?为什么前面一个括号有*号后面一个括号又没有呢?
(ULONG*)Address 是将Address 转换为 ULONG的指针类型
(ULONG)Address 是将 Address 转换为ULONG 类型。
*((ULONG*)Address) = (ULONG)MyNtOpenprocess
是首先将MyNtOpenprocess 转为为一个ULONG
然后在赋值给 Address 所指向的变量。这里Address 一定是个指针
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
学习了。楼上的几个说的都很明了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
ULONG*)Address和(ULONG)Address //有什么不同?为什么前面一个括号有*号后面一个括号又没有呢?
一个是ULONG类型;一个是ULONG类型的指针,怎么可能相同。。。。。。
|
|
|