Debugging malloc的汇编代码

Debugging malloc的汇编代码,debugging,malloc,Debugging,Malloc,我想查看malloc()、calloc()和free()的汇编代码,但当我在radare2上打印汇编代码时,它会给出以下代码: push rbp mov rbp, rsp sub rsp, 0x10 mov eax, 0xc8 mov edi, eax call sym.imp.malloc xor ecx, ecx mov qword [local_8h], rax mov eax, ecx add

我想查看
malloc()
calloc()
free()
的汇编代码,但当我在radare2上打印汇编代码时,它会给出以下代码:

push rbp                 
mov rbp, rsp
sub rsp, 0x10
mov eax, 0xc8            
mov edi, eax             
call sym.imp.malloc      
xor ecx, ecx
mov qword [local_8h], rax
mov eax, ecx
add rsp, 0x10
pop rbp
ret

如何查看
sym.imp.malloc
功能代码?是否有任何方法可以查看代码或任何网站来查看程序集?

由于libc是一个开源库,因此它是免费提供的,您只需阅读源代码即可。
malloc的源代码可以在网上许多地方找到(),您可以在
malloc/malloc.c
下查看libc不同版本的源代码

符号
sym.imp.malloc
是雷达在PLT(程序链接表)中标记
malloc
地址的方式,而不是函数本身

可以通过多种方式读取函数的汇编:

使用radare2打开本地libc库,查找malloc,分析函数,然后打印其分解:

$ r2 /usr/lib/libc.so.6
[0x00020630]> s sym.malloc
[0x0007c620]> af
[0x0007c620]> pdf
如果要在链接到另一个二进制文件时查看
malloc
,需要在
debug模式下打开该二进制文件,然后转到
main
,使其加载库,然后搜索
malloc
的地址,查找它,分析函数并打印反汇编:

$ r2 -d /bin/ls
Process with PID 20540 started...
= attach 20540 20540
bin.baddr 0x00400000
Using 0x400000
Assuming filepath /bin/ls
asm.bits 64
[0x7fa764841d80]> dcu main
Continue until 0x004028b0 using 1 bpsize
hit breakpoint at: 4028b0
[0x004028b0]> dmi libc malloc~name=malloc$
vaddr=0x7fa764315620 paddr=0x0007c620 ord=4162 fwd=NONE sz=388 bind=LOCAL type=FUNC name=malloc
vaddr=0x7fa764315620 paddr=0x0007c620 ord=5225 fwd=NONE sz=388 bind=LOCAL type=FUNC name=malloc
vaddr=0x7fa764315620 paddr=0x0007c620 ord=5750 fwd=NONE sz=388 bind=GLOBAL type=FUNC name=malloc
vaddr=0x7fa764315620 paddr=0x0007c620 ord=7013 fwd=NONE sz=388 bind=GLOBAL type=FUNC name=malloc
[0x004028b0]> s 0x7fa764315620
[0x7fa764315620]> af
[0x7fa764315620]> pdf

如果你相信我的回答能回答你的问题,请考虑接受并接受: