首页
社区
课程
招聘
[求助]C怎么将汇编转成机器码使用
发表于: 2017-4-17 14:40 5492

[求助]C怎么将汇编转成机器码使用

2017-4-17 14:40
5492

这是C的汇编代码

void Placard(LPCWSTR content)//公告

{

__asm

{

mov ecx, 0x03CE8ED4

mov ecx, dword ptr ds : [ecx + 0x0]

mov ecx, dword ptr ds : [ecx + 0x4C]

push 0x0

push 0x0

push 0x0

push 0x0

push 0x24         

push 0xFF008FFF

push content

call 0x01BECD10

}

}

转成机器码后

void Placard(LPCWSTR content)//公告

{

byte code[] = { 185, 212, 142, 206, 3, 139, 9, 139, 73, 76, 106, 0, 106, 0, 106, 0, 106, 0, 106, 36, 104, 255, 143, 0, 255, 255, 117, 8, 184, 16, 205, 190, 1, 255, 208 };

InsertCode(code);

}

然后想把机器码转成字节集写入,但API函数一定有参数,里面的那个地址怎么弄,就像易语言的置入代码那样的效果


void InsertCode(byte code[])

{

WriteProcessMemory(GetCurrentProcess(), 地址不知, code, sizeof(code), NULL);

}



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

那个地址是不是要申请个内存就行,我是在进程里面也要申请内存吗,有没有大佬指导下,这个并不难啊

2017-4-17 15:20
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
asmjit
2017-4-17 16:05
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
virtualalloc
2017-4-17 16:05
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
你这类问题    网上已经有无数答案了。
2017-4-17 16:14
0
雪    币: 5954
活跃值: (46)
能力值: ( LV4,RANK:140 )
在线值:
发帖
回帖
粉丝
6
void  InsertCode(byte  code[])
{
WriteProcessMemory(GetCurrentProcess(),  地址不知,  code,  sizeof(code),  NULL);  //  sizeof(code)  =  4  你这样只会写入4个字节的内容
}
2017-4-17 19:08
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

void InsertCode(byte code[])

{

LPVOID address = VirtualAllocEx(GetCurrentProcess(), NULL, 1024, 4096, 64);//申请内存

WriteProcessMemory(GetCurrentProcess(), address, code, sizeof(code), NULL);

VirtualFree(address, 1024, 4096); //释放申请内存

}

是这样还是直接把地址给NULL

2017-4-17 20:20
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
void InsertCode(byte code[])
{
	LPVOID address = VirtualAllocEx(GetCurrentProcess(), NULL, 1024, 4096, 64);//申请内存
	WriteProcessMemory(GetCurrentProcess(), address, code, sizeof(code), NULL);
	VirtualFree(address, 1024, 4096); //释放申请内存
}

是这样吗就行吗

2017-4-17 20:21
0
雪    币: 5954
活跃值: (46)
能力值: ( LV4,RANK:140 )
在线值:
发帖
回帖
粉丝
9
void  InsertCode(byte  code[],  int  size)
{
        LPVOID  address  =  VirtualAllocEx(GetCurrentProcess(),  NULL,  1024,  4096,  64);//申请内存
        WriteProcessMemory(GetCurrentProcess(),  address,  code,  size,  NULL);
        VirtualFree(address,  1024,  4096);  //释放申请内存
}

void  Placard(LPCWSTR  content)
{
          byte  code[]  =  {  185,  212,  142,  206,  3,  139,  9,  139,  73,  76,  106,  0,  106,  0,  106,  0,  106,  0,  106,  36,  104,  255,  143,  0,  255,  255,  117,  8,  184,  16,  205,  190,  1,  255,  208  };
          InsertCode(code,  sizeof(code));
}
2017-4-17 21:20
0
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼上正解  VF的时机自己确定就可以了  然后创建一下线程即可
2017-4-21 22:30
0
游客
登录 | 注册 方可回帖
返回
//