IDA---反汇编窗口显示字符串而非别名【不显示字符串】

文章讲述了在IDA7.5的Hex-RaysDecompiler中,如何取消勾选Printonlyconstantstringliterals选项来显示所有字符串,包括变量字符串,以便于分析和理解代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有效-231208

操作:
Edit -> Plugins -> Hex-Rays Decompiler -> Options -> Analysis options 1
取消勾选"Print only constant string literals"

原因:
一些字符串不在只读区段,Hex-Rays反编译器默认只打印常量字符串,变量字符串会以别名显示

示例:

1

2

3

4

5

6

7

8

9

10

11

12

#include <stdio.h>

char global_str[] = "hello";

int main() {

    char local_str[] = "world";

    printf("global_str: %s\n", global_str);

    printf("local_str: %s\n", local_str);

     

    return 0;

}

字符串所在区段如下:

.rdata:00417A8C aWorld          db 'world',0            ; DATA XREF: _main+10↑r
...
.data:004198B0 aHello          db 'hello',0            ; DATA XREF: _main+23↑o

默认反编译结果:

1

2

3

4

5

6

7

8

9

int __cdecl main(int argc, const char **argv, const char **envp)

{

  char v4[8]; // [esp+0h] [ebp-Ch] BYREF

  strcpy(v4, "world");

  sub_401040("global_str: %s\n", aHello);

  sub_401040("local_str: %s\n", v4);

  return 0;

}

取消勾选"Print only constant string literals"后的反编译结果:

1

2

3

4

5

6

7

8

9

int __cdecl main(int argc, const char **argv, const char **envp)

{

  char v4[8]; // [esp+0h] [ebp-Ch] BYREF

  strcpy(v4, "world");

  sub_401040("global_str: %s\n""hello");

  sub_401040("local_str: %s\n", v4);

  return 0;

}

参考链接: [求助]IDA7.5的反汇编中字符串显示为别名而非内容-求助问答-看雪-安全社区|安全招聘|kanxue.com

2023/7/14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值