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

原创 2016年08月28日 16:10:04

最近在做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这个工具直接获取相应函数的偏移




版权声明:本文为博主原创文章,转载请注明出处

得到DLL中的指定函数地址

//HelloWDM.h #ifndef _PE_H_ #define _PE_H_ #pragma once typedef unsigned short WORD; typedef unsign...
  • qq125096885
  • qq125096885
  • 2016年06月27日 14:43
  • 1148

获得KERNEL32.DLL模块地址以及函数的地址

一、通过PEB获得DWORD getKernel32BaseAddrByPEB() { PVOID pPeb = NULL; PVOID pLdr = NULL; PVOID ...
  • qq_31694351
  • qq_31694351
  • 2016年05月29日 23:33
  • 603

在知道崩溃函数偏移地址的情况下,如何定位函数名和行号

 利用map,cod文件定位崩溃代码行 利用vs2010 新建一个空的控制台项目,添加文件gtg.cpp,内容如下 void crash() {          int...
  • qq51931373
  • qq51931373
  • 2014年03月26日 21:27
  • 2341

C#获取dll中函数地址

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst...
  • haolipengzhanshen
  • haolipengzhanshen
  • 2014年07月31日 14:13
  • 2564

动态获取API函数地址

cvc论坛里好久没人写基础文章了,我就大胆地来个大家写个有关API函数地址获取的文章,希望对初学病毒的你有所帮助  要想动态地获得一个API函数的地址,我们通常都是调用系统的LoadLibraryA...
  • B_H_L
  • B_H_L
  • 2014年06月13日 17:24
  • 4543

汇编取得函数地址

// 1.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include using namespace std;#define     array_size 1...
  • ForTopLevel
  • ForTopLevel
  • 2005年07月20日 19:55
  • 1011

如何取得结构变量的偏移地址

struct Foo{   int a;   char b;   short c;};如果我想观察编译器为了达到内存对齐的要求都在Foo的每个变量后加了多少padding字节,有什么办法?我们知道编译...
  • zhaofuguang
  • zhaofuguang
  • 2013年10月18日 14:53
  • 682

8086汇编基础 取得一个标号的段地址CS与偏移地址IP

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 assume cs:code,ds:data data segment d...
  • yushaopu
  • yushaopu
  • 2016年07月25日 17:49
  • 1576

VC6.0 通过崩溃地址中找到异常代码行

这是从“VC编程经验总结7”中转出来的借花献佛——如何通过崩溃地址找到出错的代码行作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的--那就...
  • mydeardingxiaoli
  • mydeardingxiaoli
  • 2014年03月03日 14:13
  • 3189

虚函数表获取的函数地址和函数实际地址一样吗?

 最近,看帖发现不少人对虚函数表很迷惑,说虚函数表中函数的地址怎么和用函数指针获取的地址不一致?示例代码如下:#include #include using namespace std; c...
  • happymawolf
  • happymawolf
  • 2011年04月17日 23:27
  • 4600
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dll函数偏移地址获取方式方法
举报原因:
原因补充:

(最多只允许输入30个字)