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
如果你相信我的回答能回答你的问题,请考虑接受并接受: