小编use*_*458的帖子

_malloc究竟在汇编中做了什么?

public main
main proc near
push    ebp
mov     ebp, esp
and     esp, 0FFFFFFF0h
sub     esp, 30h
mov     dword ptr [esp], 8 ; size
call    _malloc
mov     [esp+2Ch], eax
mov     dword ptr [esp+4], 4
mov     eax, [esp+2Ch]
mov     [esp], eax
call    __start
Run Code Online (Sandbox Code Playgroud)

上面的代码代表了我正在处理的大型项目的一部分.我试图将此代码转换为C等效,但我很难理解malloc如何工作.

我估计8个字节将是被分配的内存的大小; 但是,我不确定这条线.

mov      eax, [esp+2ch] 
Run Code Online (Sandbox Code Playgroud)

malloc对eax做了什么?

那么这是等效的C代码吗?

int main(void)
{
int *ptr1;
ptr1 = (int *)malloc(sizeof(8));
*ptr1 = 4;
__start(*ptr1);
Run Code Online (Sandbox Code Playgroud)

c x86 assembly reverse-engineering

15
推荐指数
2
解决办法
2万
查看次数

标签 统计

assembly ×1

c ×1

reverse-engineering ×1

x86 ×1