能力值:
( LV2,RANK:10 )
|
-
-
2 楼
虚函数在内存中地址是怎么分配的,有没有规律
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
虚函数地址怎么计算啊,急求指点
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
真心的 这种基础不能再基础的问题 懒得回答
|
能力值:
( LV8,RANK:140 )
在线值:
|
-
-
5 楼
模块基址 加 偏移算不出来么 ? 难道一个dll换个电脑的同样位置代码就不一样么。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
算不出来呀,我用模块基址算出一个地址,再去推其他地址不对,指点一下谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
根据偏移推其他地址,然后我hook出来的地址和他的不一样
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
d3d9确实不能用偏移的办法做,因为它是COM的,
只能采用pattern就是特征码定位的方法
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
那几个地址是什么函数,怎么分析才能知道
|
能力值:
( LV8,RANK:140 )
在线值:
|
-
-
10 楼
COM也是dll。 可以通过模块基址加偏移的。 不然每次重启虚表函数地址都重写?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
虚表函数地址不变,但是怎么计算这个地址是什么函数呢
比如D3D9
模块地址是6ad71000
6adba046 是Present函数
6adbbe81是什么函数呢
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
你实际hook过打d3d吗,不要想当然,自己做一下就知道了
|
能力值:
( LV8,RANK:140 )
在线值:
|
-
-
13 楼
额 .
DWORD __stdcall GetDrawIndexedPrimitiveAddress()
{
// 0x58BBB6B1 0x58B90000 0x2B6B1
HMODULE hModule = ::GetModuleHandle("d3d9.dll");
if (hModule == INVALID_HANDLE_VALUE)
{
return NULL;
}
return (DWORD)hModule + 0x2B6B1;
}
DrawIndexedPrimitive 这个是COM虚函数吧。。怎么就可以通过偏移取到。
|
能力值:
( LV8,RANK:140 )
在线值:
|
-
-
14 楼
好吧。 我一直理解错了。 我以为你是知道函数名取固定函数位置, 那像你说的。 可以自己构造个抽象类 然后把D3D9的声明拷贝一份。这样偏移第几个就是你对应的虚函数吧。前提你拿到对象。
|
能力值:
( LV3,RANK:20 )
在线值:

|
-
-
15 楼
COM的话,创建实例的时候会返回虚函数的列表的
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
最后用od分析程找到这几个函数了,其实我想问的是同个表里的虚函数地址分配的有规律没
|
|
|