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 Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
IDA反汇编流程视图的常用基本操作设置
IDA中反汇编窗口中有两种不同的形式,分别是列表模式和图形模式,IDA默认打开是图形模式,就是反汇编流程视图,可以用来分析程序函数的具体运行情况。
2021-06-15
IDA的初始使用说明和界面简介
IDA能帮助我们分析恶意软件、分析系统漏洞、验证编译器的性能,其支持在Mac系统、Windows系统、Linux系统中使用,是一款非常优秀的反编译软件。
2021-03-16
最新文章
mybatisplus逆向工程是什么?mybatisplus逆向工程怎么做?
MyBatis-Plus作为一种高效的ORM框架,其逆向工程功能特别受到Java开发者的欢迎。通过自动从数据库生成代码,它极大地简化了开发流程并提高了代码质量。本文将探讨MyBatis-Plus逆向工程的核心原理,实施方法,并分析其在现代开发实践中的应用。
2024-05-17
逆向工程思维都有哪些?逆向工程思维应该如何训练?
在当今科技迅速发展的时代,这些问题对于专业人士及技术爱好者来说显得尤为重要。逆向工程思维不仅能够帮助人们深入理解技术产品的内部结构和功能原理,还能促进创新和改进,是信息安全、软件开发和硬件分析等多个领域的关键能力,了解逆向工程思维的元素及其训练方法,对于每一个科技专业人士来说都是必备的。本文将深入介绍逆向工程思维的构成,探讨如何系统地培养这种思维,并分析哪些软件工具对于实践逆向工程至关重要。
2024-05-13
计算机逆向工程是什么概念?逆向工程技术怎么学?
随着技术的快速发展,逆向工程在软件和硬件开发中扮演着越来越重要的角色。了解和学习计算机逆向工程不仅可以帮助技术人员理解复杂系统的内部机制,还能增强他们应对安全威胁的能力。本文将详细介绍计算机逆向工程的基本概念和学习途径,为那些希望深入该领域的专业人士提供指导。
2024-05-09
逆向工程技术有哪些?软件逆向工程怎么做?
在技术迅速发展的今天,逆向工程已经成为一种不可或缺的技术分析方法,特别是在软件开发和信息安全领域中。逆向工程技术使我们能够通过已完成的软件或硬件产品来探索其设计和操作的底层逻辑。本文将深入探讨逆向工程的各种技术及其在软件开发中的实际操作方法。这种技术不仅能帮助研究者学习和理解原始设计的思路,还能揭示产品潜在的安全漏洞,为改进和优化提供可能。
2024-04-30
逆向工程是什么意思?逆向工程核心原理是什么?
逆向工程是什么意思?逆向工程核心原理是什么?逆向工程作为一种复杂而又精细的技术手段,广泛应用于软件开发、硬件分析以及信息安全领域。通过分析产品的最终形态,逆向工程能够揭示出产品的设计理念、构造方法和运作原理,从而为技术创新或者产品改进提供参考和灵感。
2024-04-30
c语言反编译怎么做?c语言反编译都有哪些工具?
逆向工程在当代技术领域扮演着至关重要的角色,特别是C语言反编译,它为软件的分析和理解提供了一种全新的视角。无论是出于安全分析的需要,还是对软件内部工作机制的好奇,C语言反编译技术都能提供强有力的支持。本文将从C语言反编译的基础操作、使用的工具,到如何通过这些工具实现高效反编译等方面进行全面的讲解和指导。
2024-04-23

通过微信咨询我们

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

读者也喜欢这些内容: