行业解决方案查看所有行业解决方案
IDA 用于解决软件行业的关键问题。
发布时间: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脚本中使用处理器寄存器名称。从这样的变量读取返回相应的寄存器值。将值写入这样的变量将修改调试过程中的寄存器值。这些变量仅在应用程序处于暂停模式时可访问。
注意:模拟全局作用域变量的另一种方法是使用数组函数并创建全局持久性数组。
展开阅读全文
︾
读者也喜欢这些内容:
ida怎么查看变量的值?ida怎么看函数流程图?
在软件开发和逆向工程行业,ida(Interactive DisAssembler)作为一种强悍的多处理器调试器和反汇编器,它遭受安全研究人员及反向工程师的欢迎。它提供了很多作用,包括但不限于变量值查看、函数流程表分析等,大大提升了软件分析的效率和深层。本文介绍了ida怎么查看变量的值,ida怎么看函数流程图的内容,为许多反向工程师和软件开发人员给予有用的指南。...
阅读全文 >
3d扫描逆向工程是什么?使用IDA进行3d扫描逆向工程
3D扫描逆向工程作为一种创新技术,正在逐步更改大家对物理全球的理解处理办法。结合IDA(Interactive Disassembler)这类反向工程工具,3D扫描技术突出了更广阔的应用前景。本文将详细分析3d扫描逆向工程是什么,使用IDA进行3d扫描逆向工程,为相关领域的专业人士提供全面的信息和意见。...
阅读全文 >
ida可以动态调试吗 ida如何动态调试
在软件开发和安全分析领域,动态调试是一项至关重要的技术。它允许开发者和分析师在程序运行时检查和修改其状态,是理解和解决复杂问题的关键工具之一。...
阅读全文 >
ida可以逆向c语言么 ida将汇编转换为c语言的使用教程
在当今数字化的时代,软件开发和安全性研究变得越来越重要,而IDA(Interactive Disassembler)作为一款强大的反汇编工具,扮演了不可或缺的角色。...
阅读全文 >