如何在radare2中编写[sp+local_variable]

逆向工程 手臂 雷达2
2021-06-25 05:01:48

你好,我正在使用我的原生 android 库,到目前为止一切都很顺利。我的操作码有问题,我不知道如何告诉radare2 使用特定注册表编写 str 操作码,并将其指向堆栈指针和局部变量。

详情如下:

通过以下方式加载的库:

r2 -Aw lib/arm64-v8a/libnative-lib.so

变更前

|           ; var int local_ch @ sp+0xc
|           ; var int local_10h @ sp+0x10
|           ; var int local_18h @ sp+0x18
[...]
|           0x0000946c      e00f00f9       str x0, [sp + local_18h]
|           0x00009470      e10b00f9       str x1, [sp + local_10h]

应用更改

[0x00009470]> wa str x1,sp+local_10h
Written 4 byte(s) (str x1,sp+local_10h) = wx e10300f9

不需要的输出

[0x00009470]> pd 1
|           0x00009470      e10300f9       str x1, [sp]

我想要但不知道如何获取的输出(注意“ + local_10h ”标签)

  [0x00009470]> pd 1
  |           0x00009470     e10b00f9       str x1, [sp + local_10h]
1个回答

因此,要从评论中订购 - 您可以使用两种方法来完成。

  1. 使用原始的操作码和他们使用写wx代表“ w ^仪式^ h EX”:

    wx e10b00f9
    
  2. 如果你仍然想使用wa你可以这样做:

    wa str x1,sp,0x10
    

通常,可以使用afv命令和子命令来处理函数的局部变量执行afv?以查看其子命令:

[0x00000000]> afv?
|Usage: afv[rbs]
| afvr[?]                     manipulate register based arguments
| afvb[?]                     manipulate bp based arguments/locals
| afvs[?]                     manipulate sp based arguments/locals
| afv*                        output r2 command to add args/locals to flagspace
| afvR [varname]              list addresses where vars are accessed (READ)
| afvW [varname]              list addresses where vars are accessed (WRITE)
| afva                        analyze function arguments/locals
| afvd name                   output r2 command for displaying the value of args/locals in the debugger
| afvn [old_name] [new_name]  rename argument/local
| afvt [name] [new_type]      change type for given argument/local
| afv-([name])                remove all or given var

通过执行,afv您将看到所有参数的列表,bp以及sp基于的局部变量。例如,通过执行,afvs您将看到所有基于堆栈指针的变量的列表。使用afvb一看就知道是基于基本指针变量。

执行这些命令后,您将看到这些变量名称是如何定义的:

var int local_8h @ rsp+0x8
var int local_10h @ rsp+0x10

例如,您可以看到local_8hrsp+0x8定义local_10hrsp+0x10
在调试时,您可以使用afvd [var_name]来更多地了解变量。