帮忙看下这段代码,谢谢

nilo 2006-12-30 10:47:27
LPVOID NewModule;
LPDWORD lpimagesize;

Module = GetModuleHandle(NULL);//进程映像的基址
_asm
{
push eax;
push ebx;
mov ebx,Module;
mov eax,[ebx+0x3c];
lea eax,[ebx+eax+0x50];
mov eax,[eax]
mov lpimagesize,eax;
pop ebx;
pop eax;
};

小弟刚刚学汇编,不理解上面这段代码,是C语言嵌入进去的,请高手帮忙转成C看看,谢谢了!
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2006-12-30
  • 打赏
  • 举报
回复
大概是这样:


LPVOID lpModule;
DWORD iOffPE;
LPDWORD lpimagesize;


lpModule = (LPVOID)GetModuleHandle(NULL);
iOffPE = *(LPDWORD)((LPBYTE)lpModule + 0x3c);
lpimagesize = (LPDWORD)((LPBYTE)lpModule + iOffPE + 0x50);
zyl910 2006-12-30
  • 打赏
  • 举报
回复
模块句柄(Module Handle)就是该模块装载到内存的地址


HMODULE Module;
LPDWORD lpimagesize;

Module = GetModuleHandle(NULL);//进程映像的基址
_asm
{
push eax;
push ebx;
mov ebx,Module; // 模块句柄(Module Handle)就是该模块装载到内存的地址
mov eax,[ebx+0x3c]; // 在MZ头中定位PE头
lea eax,[ebx+eax+0x50]; // 在PE头中(实际上是IMAGE_OPTIONAL_HEADER)定位SizeOfImage字段
mov eax,[eax]
mov lpimagesize,eax;
pop ebx;
pop eax;
};

nilo 2006-12-30
  • 打赏
  • 举报
回复
麻烦高手把这段汇编转换成C看看,谢谢了
nilo 2006-12-30
  • 打赏
  • 举报
回复
错了,应该是这样的,呵呵
不好意思了

HMODULE Module;
LPDWORD lpimagesize;

Module = GetModuleHandle(NULL);//进程映像的基址
_asm
{
push eax;
push ebx;
mov ebx,Module;
mov eax,[ebx+0x3c];
lea eax,[ebx+eax+0x50];
mov eax,[eax]
mov lpimagesize,eax;
pop ebx;
pop eax;
};

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧