【程序的API内存地址怎么获取?两个API教你轻松搞定!(做挂必备功能)】

游戏 徐 自远 538℃

【程序的API内存地址怎么获取?两个API教你轻松搞定!(做挂必备功能)】

在我们制作游戏外挂的时候,或者API HOOK的时候,或者程序的简单的破解的时候,我们总会遇到需要获取游戏API内存地址的时候。

有的工具可以直接定位API的内存地址。例如:CE!

我们今天以我随便编写的一个程序为例,获取该程序的openprocess API的内存地址。

如我们用CE工具获取openprocess API的内存地址:

1.

2.

我们用CE工具很简单的就获取了API的头文件地址,但是我们用编程的方式怎么实现呢?

我们仅仅需要两个API即可搞定!

  1. 首先我们来看API定义:

Declare Function OpenProcessLib “kernel32” Alias “OpenProcess” (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

我们可以看到openprocess这个API是调用于kernel32.dll。

知道了这些我们编写代码:

2. 我们仅仅需要调用两个API。

  1. LoadLibrary:载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源,成功则返回库模块的句柄,零表示失败。
  2. GetProcAddress:函数检索指定的动态链接库(DLL)中的输出库函数地址。如果函数调用成功,返回值是DLL中的输出函数地址

3. 我们编写代码,以VB6.0为例!

Private Declare Function GetProcAddress Lib “kernel32” (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Declare Function LoadLibrary Lib “kernel32” Alias “LoadLibraryA” (ByVal lpLibFileName As String) As Long

Private Sub Command1_Click()

MsgBox Hex(GetProcAddress(LoadLibrary(“kernel32.dll”), “OpenProcess”))

End Sub

4.运行程序,我们测试看下效果!


是不是很简单呢?这个的应用相当的广泛呢。。。别人做出来的时候,您一定会很好奇是怎么实现的吧?其实原理很简单!你们学会了吗?

http://m.toutiao12.com/group/6446487959940219150/?iid=12247953545&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【程序的API内存地址怎么获取?两个API教你轻松搞定!(做挂必备功能)】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号