能力值:
( LV2,RANK:10 )
|
-
-
2 楼
如果call 01000000(比如说这个地址是MessageBoxA的地址),如何把它变成机器码E8 xxxxxxxx?
|
能力值:
( LV9,RANK:210 )
|
-
-
3 楼
010460DC-0101E24E=00027E8E
897E0200
00027E8E
有什么联系呢?
E8 897E0200 正好是5个字节哦
|
能力值:
(RANK:410 )
|
-
-
4 楼
010460DC -0101E24E -5 =00 02 7E 89 == E8 89 7E 02 00
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
哈哈,谢谢楼上两位大虾,终于弄明白了,另外再问个菜菜的问题!
HMODULE Module;
LPDWORD lpimagesize;
Module = GetModuleHandle(NULL);//进程映像的基址
_asm
{
push eax;
push ebx;
mov ebx,Module; //把映像的基址放到ebx里
mov eax,[ebx+0x3c];
lea eax,[ebx+eax+0x50]; //这里不明白,为什么还要再+ebx?应该不用再+ebx,直接eax+0x50就可以得到大小了,因为先前已经做了mov eax,[ebx+0x3c]了啊???
mov eax,[eax]
mov lpimagesize,eax;
pop ebx;
pop eax;
};
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
如果这样的话,就说明装载了两次基址,应该装载一次才对啊?
麻烦各位大虾顺手回答下,真是不好意思了
|
能力值:
(RANK:410 )
|
-
-
7 楼
mov ebx,hModule // 取得程序的基地址
mov eax,[ebx+0x3C] //这个是取得PE文件的e_lfanew成员变量,这个变量只是指向PE文件的IMAGE_NT_HEADERS结构偏移大小,并不包含基址,所以后面还要再加上ebx的基址才行。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
[QUOTE=小虾;319194]mov ebx,hModule // 取得程序的基地址
mov eax,[ebx+0x3C] //这个是取得PE文件的e_lfanew成员变量,这个变量只是指向PE文件皮..[/QUOTE]
晕哦,昨天一时糊涂,谢谢这位“大虾”了,不是小虾,嘿嘿
看雪真是高手如云,以后要经常来请教各位“大虾”了,呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
受教了,感谢!!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
对了,问句题外话,想用汇编练练手的话用什么软件进行编译?如c语言可以用wintc
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
http://www.x86asm.com/DisplayArticle.asp?BoardID=5&ArticleID=15
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
有很多要学的哦,高手也多啊
|
|
|