小编Jor*_*ssi的帖子

手动创建PE

我在 Windows 7 中使用 nasm 制作了一个简单的 MessageBox,我对生成的文件的大小有点不满意:2.51 kb。

extern MessageBoxA
extern ExitProcess

import MessageBoxA user32.dll 
import ExitProcess kernel32.dll

section .text use32 

..start: 

push 0
push sCapt
push sText
push 0
call [MessageBoxA]


push 0
call [ExitProcess] 

section .data 

sCapt db 'test', 0
sText db 'test2', 0
Run Code Online (Sandbox Code Playgroud)

所以我在 OllyDbg 中打开了可执行文件,似乎它生成了很多不必要的东西。

奥利德布格

因此,为了了解更多信息,我想直接以十六进制形式制作该程序,以保持尽可能小的大小!我进行了搜索,但没有找到任何教导如何手动创建 PE 可执行文件的内容。

如果有人能给我链接或解释如何做,我将不胜感激!

c c++ windows assembly winapi

0
推荐指数
1
解决办法
903
查看次数

错误C2297:'*':非法,右操作数的类型为'BYTE*'

为什么在此行上出现此错误?

*(BYTE*)(dwAddr + 5) = 0xC3;
Run Code Online (Sandbox Code Playgroud)

Main.cpp(34):错误C2297:'*':非法,右操作数的类型为'BYTE*'

void PushRetHook(DWORD dwAddr, LPVOID dwNew, int size)
{
    DWORD OldProt;
    VirtualProtect((void*)dwAddr, size, PAGE_EXECUTE_READWRITE, &OldProt);
    memset((void*)(dwAddr), 0x90, size);
    *(BYTE*)dwAddr = 0x68;
    *(DWORD*)(dwAddr + 1) = (DWORD)dwNew
    *(BYTE*)(dwAddr + 5) = 0xC3;
    VirtualProtect((void*)(dwAddr), size, OldProt, &OldProt);
}
Run Code Online (Sandbox Code Playgroud)

c c++ windows assembly hook

-3
推荐指数
1
解决办法
1821
查看次数

标签 统计

assembly ×2

c ×2

c++ ×2

windows ×2

hook ×1

winapi ×1