IDA Pro > IDA Pro教程 > 技术问题 > IDA Pro变量(Variables)

IDA Pro变量(Variables)

发布时间:2022-10-15 14: 47: 45

  There are two kinds of variables in IDC:

 -local variables:they are created at the function entry

 and destroyed at the exit

 -global variables:they are created at the compilation time

 and destroyed when the database is closed

 A variable can contain:

 -LONG:a 32-bit signed long integer(64-bit in 64-bit version of IDA)

 -INT64:a 64-bit signed long integer

 -STR:a character string

 -FLOAT:a floating point number(extra precision,up to 25 decimal digits)

 -OBJECT:an object with attributes and methods

 (a concept very close to C++class)more

 -REF:a reference to another variable

 -FUNC:a function reference

 A local variable is declared this way:

 auto var1;

 auto var2=;

 Global variables are declared like this:

 extern var;

 Global variables can be redefined many times.IDA will silently ignore subsequent declarations.Please note that global variables cannot be initialized at the declaration time.

 All C and C++keywords are reserved and cannot be used as a variable name.

 While it is possible to declare a variable anywhere in the function body,all variables are initialized at the function entry and all of them are destroyed only at the exit.So,a variable declared in a loop body will not be reinitialized at each loop iteration,unless explicitly specified with an assignment operator.

 If a variable or function name cannot be recognized,IDA tries to resolve them using the names from the disassembled application.In it succeeds,the name is replaced by its value in the disassembly listing.For example:

 .data:00413060 errtable dd 1;oscode

 .data:00413060 dd 16h;errnocode

 msg("address is:%x\n",_errtable);

 will print 413060.If the label denotes a structure,it is possible to refer to its fields:

 msg("address is:%x\n",_errtable.errnocode);

 will print 413064.Please note that IDA does not try to read the data but just returns the address of the structure field.The field address can also be calculated using the get_field_ea function.

 NOTE:The processor register names can be used in the IDC scripts when the debugger is active.Reading from such a variable return the corresponding register value.Writing to such a variable modifies the register value in the debugged process.Such variables are accessible only when the application is in the suspended mode.

 NOTE:another way to emulate global scope variables is to use array functions and create global persistent arrays.

 中文翻译如下:

 DC中有两种变量:

 ●局部变量:它们在函数入口处创建,在函数退出时销毁

 ●全局变量:它们在编译时创建,在数据库关闭时销毁

 ●变量可以包含以下内容:LONG:32位有符号长整型(64位版本的IDA中为64位)

 ●INT64:64位有符号长整型

 ●STR:字符字符串

 ●FLOAT:浮点数(额外精度,最多25个小数位)

 ●OBJECT:具有属性和方法的对象(概念非常接近于C++类)更多信息

 ●REF:对另一个变量的引用

 ●FUNC:函数引用

 局部变量的声明方式为:

 auto var1;

 auto var2=;

 全局变量声明方式为:

 extern var;

 全局变量可以重复定义多次,IDA会自动忽略后续的声明。请注意,全局变量不能在声明时初始化。

 所有C和C++关键字都是保留的,不能用作变量名。

 尽管可以在函数体的任何位置声明变量,但所有变量都在函数入口初始化,并且只有在函数退出时才会销毁它们。因此,在循环体中声明的变量不会在每次循环迭代中重新初始化,除非使用赋值运算符明确指定。

 如果无法识别变量或函数名称,IDA会尝试使用反汇编应用程序中的名称进行解析。如果成功,名称将替换为其在反汇编列表中的值。例如:

 .data:00413060 errtable dd 1;oscode

 .data:00413060 dd 16h;errnocode

 msg("address is:%x\n",_errtable);

 将打印413060。如果标签表示结构,则可以引用其字段:

 msg("address is:%x\n",_errtable.errnocode);

 将打印413064。请注意,IDA不尝试读取数据,只是返回结构字段的地址。可以使用get_field_ea函数计算字段地址。

 注意:当调试器处于活动状态时,可以在IDC脚本中使用处理器寄存器名称。从这样的变量读取返回相应的寄存器值。将值写入这样的变量将修改调试过程中的寄存器值。这些变量仅在应用程序处于暂停模式时可访问。

 注意:模拟全局作用域变量的另一种方法是使用数组函数并创建全局持久性数组。

展开阅读全文

标签:

读者也访问过这里:
邀请您进入交流群 点击扫码
400-8765-888 kefu@makeding.com

专业销售为您服务

欢迎添加好友,了解更多IDA优惠信息,领逆向工程学习资料礼包1份!
热门文章
exe反编译工具哪个好?反编译能力强的工具盘点
随着软件技术的发展,exe(可执行文件)已经成为了电脑、手机等多个平台上的主要软件运行格式,而对于exe文件的反编译也成为了逆向工程中不可缺少的一个步骤。本文将介绍一些常用的exe反编译工具,并评价其优缺点,帮助读者选择合适的工具。
2023-04-12
idapro怎么改为中文
IDA Pro是一款功能强大的反汇编和反编译工具,广泛应用于逆向工程和软件开发领域。在使用IDA Pro时,如果我们不习惯英文界面,可以将其改为中文界面。本文将介绍IDA Pro怎么改为中文界面。IDA Pro界面改成中文主要有两种方法,下面是详细介绍。
2023-04-19
c++反编译工具有哪些
反编译C++代码的工具一般是针对可执行文件和库文件的反汇编和逆向分析工具。本文将给大家介绍c++反编译工具有哪些的内容。市面说的c++反编译工具有很多,下面介绍几款使用认识较多的软件。
2023-04-23
ida怎么查找字符串 ida字符串窗口快捷键
在数字化时代,逆向工程作为解密软件和分析程序的关键技术,正日益受到广泛关注。在逆向分析的过程中,IDA(Interactive DisAssembler)是一款备受推崇的工具,它为逆向工程师们提供了强大的功能和灵活的操作。本文将带您深入探讨如何在IDA中查找字符串,优化字符串窗口的使用,并探讨IDA如何将变量转换成字符串,帮助您更加熟练地驾驭这一工具,为逆向分析的世界增添一抹精彩。
2023-09-27
ida如何转伪代码 ida伪代码怎么看
IDA Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
最新文章
IDA反编exe怎么处理入口点 IDA反编exe导入符号后仍无函数名怎么改善
exe进IDA后第一眼最容易卡住两件事:入口点跳过去像一团乱麻,不知道从哪里开始顺;导入了符号却仍然满屏sub_,看起来像没导入成功。处理这类问题不要凭感觉乱点,按固定顺序把入口点与加载口径对齐,再把符号匹配、库函数识别、函数边界恢复三条线分别处理,通常就能明显提升可读性。
2026-03-12
IDA分析dsp怎么选处理器模块 IDA分析dsp反汇编全是数据段怎么处理
用IDA分析DSP时,处理器模块选错会直接把指令当成数据,反汇编窗口看起来就像整段都是字节数组。更麻烦的是,你一旦在错误模块下做了大量标注与重命名,后面再换模块会发现视图和引用关系全变了。正确做法是先把处理器模块与装载口径选对,再让IDA完成一次稳定的自动分析,然后再进入深挖。
2026-03-12
IDA逆向教程怎么系统化学习 IDA逆向教程练习样本怎么挑不踩坑
学IDA逆向想走得稳,关键是把学习顺序排对,把练习变量控住。先用可复现的步骤建立分析习惯,再用难度合适的样本训练定位入口、还原数据结构、验证关键分支这三种能力,进步会更可见,也不容易卡在壳与反调试上消耗时间。
2026-03-12
IDA反编译c++怎么看类结构 IDA反编译c++虚函数表怎么识别
用IDA反编译C++时,类结构还原与虚函数表识别是一体两面。你先把vptr写入点和成员偏移搞清楚,伪代码里的this指针与结构体字段才会“长”出来。下面按可操作路径讲清楚,先看类结构怎么搭起来,再看虚函数表怎么定位与命名,最后给一套反推校对的方法,方便你在大型工程里快速闭环。
2026-03-11
IDA静态分析算法怎么理解 IDA静态分析算法在图视图里怎么验证判断
在IDA里说的静态分析算法,更多是指自动分析阶段对二进制做反汇编、函数识别、交叉引用与控制流建模的一整套推断流程。图视图把这种推断结果用基本块与边的形式直接展示出来,你不需要先把每条指令读完,就能先验证它的判断是否站得住,再决定哪里值得深挖。
2026-03-10
IDA逆向分析从哪里开始 IDA逆向分析如何快速定位关键逻辑
用IDA做逆向,起步阶段最容易犯的错,是一上来就盯着反汇编硬读,结果入口没找准、分析口径没统一、笔记也没体系,越看越乱。更稳的做法是先把样本信息、加载参数、自动分析结果固定下来,再用少量高信息线索把范围收敛到关键函数集合,最后再进入精读与还原,这样效率会高很多。
2026-03-09

通过微信咨询我们

欢迎添加好友,了解更多IDA优惠信息,领取逆向工程学习资料礼包1份!

读者也喜欢这些内容: