没看出来你要这些地址要干什么。
你要的东西貌似也没太看懂。
这里提供一个可能是你想要的方法:
遍历当前进程模块,读取每一个模块的输入表,里面有你要的函数名和函数地址。
1、获得函数的地址
函数名实际上就是指针,所以可以通过强制类型转换来获取函数的地址。
int i = 0;
i = (int)main;
printf(“%d\n”,i);
这样我们就获取了main函数的地址了,其他的自定义的函数也是同样的道理啊。
2、获取变量地址
int variab = 0;
int addrvar = 0;
addrvar = (int)&variab;
在变量addrvar中保存了变量variab的地址。
3、获得数组的地址
数组本身就是指针,它本身就是内存地址,和获得函数地址的方法一样啊。比如
int array[10];
int addrarr;
addrarr = (int)array;
HMODULE hDll = LoadLibrary(TEXT("DllExportsExdll")); // 加载一个DLL
FARPROC pfn = GetProcAddress(hDll, "Func"); /// 获取函数地址,第一个参数为DLL模块句柄,第二个参数为函数名称
C#的指针用途非常有限,值类型可以用指针来 *** 作,但引用类型就不行了。 以下是代码: using SystemRuntimeInteropServices; using System; namespace ConsolePrototype { public class A { } class Program { static void Main(string[] args)
在 Python 中,可以使用 id() 函数来获取对象的内存地址,包括函数对象。因此,要表示一个函数的地址,可以使用以下代码:
python
def my_func():
pass
# 获取 my_func 函数的地址
func_address = id(my_func)
print(func_address) # 输出一个整数,代表 my_func 函数的地址
注意,每次程序执行时,函数对象所在的内存地址可能不同,因此同一个函数的地址也可能不同。因此,如果需要在不同的程序运行中比较函数地址,最好使用 functoolscmp_to_key() 函数来比较函数的 id 值。例如:
python
import functools
def my_func():
pass
# 获取 my_func 函数的地址
func_address = id(my_func)
# 定义一个比较函数,用于根据函数地址比较两个函数的大小
cmp_func = functoolscmp_to_key(lambda x, y: id(x) - id(y))
# 比较 my_func 和另一个函数的地址大小
if cmp_func(my_func, other_func) < 0:
print("my_func 的地址比 other_func 小")
else:
print("my_func 的地址比 other_func 大")
以上就是关于在程序中如何自动的获取 进程所使用动态库/静态库中函数地址 输入时函数名 字符串形式全部的内容,包括:在程序中如何自动的获取 进程所使用动态库/静态库中函数地址 输入时函数名 字符串形式、请教一个问题,如何获得一个变量的内存地址、怎么 获取一个函数指针的地址值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)