我正在做一个大学项目,所以我正在尝试在MASM32中编写一个PE感染者。 所需功能之一不是直接调用所需的函数,而是动态查找其地址: 我在内存中搜索kernel32 lib,用它的导出表我找到GetProcAddressName函数,然后找到GetModuleHandle函数,然后用这个我加载user32句柄,我用GetProcAdsress获取函数;我的例子中的MessageBoxA:
push MB_OK
push offset hello
push offset hello
push 0
call MessageBoxA
结果是调用MessageBoxAddr时出现分段错误。 如果我调用原始函数,则无效,无论在何处:
public static void bubbleSort(ArrayList<Integer> list){
for(int i = 0; i < list.size(); i++) {
for(int j = 1; j < (list.size() -i); j++) {
if(list.get(j - 1) > list.get(j)) {
int temp = list.get(j-1);
list.set(j-1, list.get(j));
list.set(j, temp);
}
}
}
}
如果我在此调用之前或之后放置此样本,这两个调用都有效,这对我来说是完全没有意义的。
你有任何线索吗?谢谢
答案 0 :(得分:1)
问题解决了: GetModuleHandle函数仅在lib已经加载到内存中时才有效,并提供了它的句柄。
我使用的是LoadLibraryA(找不到LoadLibrary,我不知道为什么......)并且它完美无缺。无论如何,谢谢:p