能力值:
( 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 楼
bdfK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4R3^5y4X3q4K6L8g2)9J5k6h3y4G2L8g2)9J5c8V1c8A6M7%4m8D9j5i4W2m8M7Y4c8A6j5$3I4W2i4K6u0W2j5i4y4H3i4K6y4r3b7X3!0S2M7X3c8u0c8q4)9K6c8o6g2Q4x3U0k6m8M7Y4c8A6j5$3I4W2d9f1c8Q4x3@1b7I4y4b7`.`.
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
有很多要学的哦,高手也多啊
|
|
|