Cutter/Radare2 的功能反汇编的布局是什么意思?

逆向工程 雷达2
2021-07-06 15:26:00

刀具显示如下功能: 在此处输入图片说明

我无法理解功能的布局

例如: 在此处输入图片说明

184是什么意思?什么是绿色| 在每一行的开头是什么意思?为什么有两条跳转指令?

2个回答

这个查询与逆向工程有关

184 是函数的大小,你可以使用 afi 来检查函数的大小是多少

[0x01012d6c]> afil
address    size  nbbs edges    cc cost  min bound range max bound  calls locals args xref frame name
========== ==== ===== ===== ===== ==== ========== ===== ========== ===== ====== ==== ==== ===== ====
0x01012d6c  626    43    62    23  290 0x0101217f 110918 0x0102deb2    19    6      3    0   112 entry0
[0x01012d6c]>

绿线代表基本块边界/跳转到/从等跳转

你可以禁用它们

e asm.lines = false

为什么知道这是你的二进制文件的两次跳转可能是你必须确定的手工代码

你可以有 n 次无条件跳转,一个低于另一个

假设你有这样的代码

#include <stdio.h>
__declspec (naked) void foo(void) {
    goto jumphere;
    jumpthere:
    goto dowork;    
    jumphere:
    goto jumpthere;
    dowork:
    printf ("i came here after jumping through hoops\n");
}
void main(void){
foo();
}

如果你反汇编 foo() 你可以看到像你在屏幕截图上显示的跳转

[0x00401358]> af @0x401000
[0x00401358]> pdf @0x401000
            ;-- section..text:
/ (fcn) fcn.00401000 20
|   fcn.00401000 ();
|       ,=< 0x00401000      eb06           jmp 0x401008                ; [00] -r-x section size 249856 named .text
..
|      ||   ; CODE XREF from fcn.00401000 (0x401008)
|    ,.---> 0x00401004      eb04           jmp 0x40100a
..
|   |||||   ; CODE XREF from fcn.00401000 (0x401000)
|   ||```-> 0x00401008      ebfa           jmp 0x401004
|   ||      ; CODE XREF from fcn.00401000 (0x401004)
|   ``----> 0x0040100a      68a0e14300     push str.i_came_here_after_jumping_through_hoops ; 0x43e1a0 ; "i came here after jumping through hoops\n"
|           0x0040100f      e85c000000     call fcn.00401070
|           0x00401014      83c404         add esp, 4
\           0x00401017      cc             int3

[0x00401358]> e asm.lines= false

[0x00401358]> pdf @0x401000
;-- section..text:
(fcn) fcn.00401000 20
  fcn.00401000 ();
0x00401000      eb06           jmp 0x401008                            ; [00] -r-x section size 249856 named .text
..
; CODE XREF from fcn.00401000 (0x401008)
0x00401004      eb04           jmp 0x40100a
..
; CODE XREF from fcn.00401000 (0x401000)
0x00401008      ebfa           jmp 0x401004
; CODE XREF from fcn.00401000 (0x401004)
0x0040100a      68a0e14300     push str.i_came_here_after_jumping_through_hoops ; 0x43e1a0 ; "i came here after jumping through hoops\n"
0x0040100f      e85c000000     call fcn.00401070
0x00401014      83c404         add esp, 4
0x00401017      cc             int3
[0x00401358]>

我不知道184是什么意思;也许您应该向右滚动左窗格以查看它是否出现在那里以及该列的名称是什么。

关于左侧的管道,这些是从出现在顶部的功能延伸的箭头:这些只是向下延伸的“线”,因此您将能够跟踪分支源/目的地。