关闭

dll函数偏移地址获取方式方法

78人阅读 评论(0) 收藏 举报

最近在做d3d 方面的时候  查询某游戏的dll 偏移的时候 想记录下 


在vs 里面反汇编代码如下 绘制图像 之前很多都是hook

DrawIndexedPrimitive<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">函数进行透视 z缓冲处理</span>

   554: 	g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12);//利用索引缓存配合顶点缓存绘制图形
0037235C A1 FC 63 37 00       mov         eax,dword ptr ds:[003763FCh]  
00372361 6A 0C                push        0Ch  
00372363 6A 00                push        0  
00372365 6A 18                push        18h  
00372367 8B 08                mov         ecx,dword ptr [eax]  
00372369 6A 00                push        0  
0037236B 6A 00                push        0  
0037236D 6A 04                push        4  
0037236F 50                   push        eax  
00372370 FF 91 48 01 00 00    call        dword ptr [ecx+148h] //我们跟进这个函数 进行定位偏移


下面是F11跟进 00372370 call 里面的代码 
这个就进入 d3d 的
DrawIndexedPrimitive 函数里面了

6F33B6B1 8B FF                mov         edi,edi  
6F33B6B3 55                   push        ebp  
6F33B6B4 8B EC                mov         ebp,esp  
6F33B6B6 6A FF                push        0FFFFFFFFh  
6F33B6B8 68 28 BE 4A 6F       push        6F4ABE28h  
6F33B6BD 64 A1 00 00 00 00    mov         eax,dword ptr fs:[00000000h]  
6F33B6C3 50                   push        eax  
6F33B6C4 83 EC 20             sub         esp,20h  
6F33B6C7 53                   push        ebx  
6F33B6C8 56                   push        esi  
6F33B6C9 57                   push        edi  
6F33B6CA A1 50 92 4B 6F       mov         eax,dword ptr ds:[6F4B9250h]  
6F33B6CF 33 C5                xor         eax,ebp  
6F33B6D1 50                   push        eax  
6F33B6D2 8D 45 F4             lea         eax,[ebp-0Ch]  
6F33B6D5 64 A3 00 00 00 00    mov         dword ptr fs:[00000000h],eax  
6F33B6DB 89 65 F0             mov         dword ptr [ebp-10h],esp  
6F33B6DE 8B 7D 08             mov         edi,dword ptr [ebp+8]  
6F33B6E1 33 DB                xor         ebx,ebx  
6F33B6E3 3B FB                cmp         edi,ebx  
6F33B6E5 0F 84 BA 03 00 00    je          6F33BAA5  

随便一个可以查询dll 基质的工具都可以

配图用的是task explorer



6F33B6B4-6F310000=0x2B6B4 这个就是该函数的基质偏移 


不管dll怎么重定向新的基质 只需要源基质+0x2B6B4 就能直接到达 

DrawIndexedPrimitive 
这个函数

下面图片是找内存加载纹理的函数 经过上面方面的计算 可以直接通过dependency walker这个工具直接获取相应函数的偏移




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:297次
    • 积分:42
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档