IDA Pro > IDA Pro教程 > 技术问题 > IDA Pro编辑功能(Edit Function)

IDA Pro编辑功能(Edit Function)

发布时间:2023-04-19 11: 33: 48

Action name:EditFunction

Here you can change function bounds,its name and flags.In order to change only the function end address,you can use FunctionEnd command.

If the current address does not belong to any function,IDA beeps.

This command allows you to change the function frame parameters too.You can change sizes of some parts of frame structure.

IDA considers the stack as the following structure:

+------------------------------+

|function arguments|

+------------------------------+

|return address|

+------------------------------+

|saved registers(SI,DI,etc)|

+------------------------------+<-BP

|local variables|

+------------------------------+<-SP

For some processors or functions,BP may be equal to SP.In other words,it can point to the bottom of the stack frame.

You may specify the number of bytes in each part of the stack frame.The size of the return address is calculated by IDA(possibly depending on the far function flag).

"Purged bytes"specifies the number of bytes added to SP upon function return.This value will be used to calculate the SP changes at call sites(used in some calling conventions,such as __stdcall in Windows 32-bit programs.)

"BP based frame"allows IDA to automatically convert[BP+xxx]operands to stack variables.

"BP equal to SP"means that the frame pointer points to the bottom of the stack.It is usually used for the processors which set up the stack frame with EBP and ESP both pointing to the bottom of the frame(for example MC6816,M32R).

If you presseven without changing any parameter,IDA will reanalyze the function.

Sometimes,EBP points to the middle of the stack frame.FPD(frame pointer delta)is used to handle such situations.FPD is the value substracted from the EBP before accessing variables.An example:

push ebp

lea ebp,[esp-78h]

sub esp,588h

push ebx

push esi

lea eax,[ebp+74h]

+------------------------------+

|function arguments|

+------------------------------+

|return address|

+------------------------------+

|saved registers(SI,DI,etc)|

+------------------------------+<-typical BP

||

||

||<-actual BP

|local variables|

||

||

||

+------------------------------+<-SP

In our example,the saved registers area is empty(since EBP has been initialized before saving EBX and ESI).The difference between the'typical BP'and'actual BP'is 0x78 and this is the value of FPD.

After specifying FPD=0x78 the last instruction of the example becomes

lea eax,[ebp+78h+var_4]

where var_4=-4

Most of the time,IDA calculates the FPD value automatically.If it fails,the user can specify the value manually.

If the value of the stack pointer is modified in an unpredictable way,(e.g."and esp,-16"),then IDA marks the function as"fuzzy-sp".

If this command is invoked for an imported function,then a simplified dialog box will appear on the screen.

 

以下为中文翻译:

Action name:EditFunction

这里您可以更改函数边界、其名称和标志。为了只更改函数结束地址,您可以使用FunctionEnd

命令。

如果当前地址不属于任何函数,IDA发出嘟嘟声。

此命令也允许您更改函数框架参数。您可以更改框架结构的某些部分的大小。

IDA将堆栈视为以下结构:+-------------------------------+|函数参数|+-------------------------------+|返回地址|+-----------------------------------+|保存的寄存器(SI、DI等)

|

+-------------------------------+<-

BP|局部变量|+-----------------------------------+<-SP

对于某些处理器或函数,BP可能等于SP。换句话说,它可以指向堆栈帧的底部。

您可以指定堆栈帧每个部分的字节数。返回地址的大小由IDA计算(可能取决于远函数标志)。

“清除的字节”指定函数返回时添加到SP的字节数。此值将用于计算调用站点的SP更改(用于某些调用约定,如Windows 32位程序中的__stdcall)。

“基于BP的帧”允许IDA自动将[BP+xxx]操作变量转换

为堆栈变量。

“BP等于SP”意味着帧指针指向堆栈的底部。它通常用于设置堆栈帧的处理器,其中EBP和ESP都指向帧的底部(例如MC6816、M32R)。

如果您在不更改任何参数的情况下按,IDA将重新分析函数。

有时,EBP指向堆栈帧的中间。PD(帧指针delta)用于处理此类情况。PD是在访问变量之前从EBP减去的值。

例如:push EBP

lea EBP,[esp-78h]

sub esp,588h

push ebx

push esi

lea eax,[ebp+74h]+-------------------------------+

|

函数参数|+-------------------------------+|返回地址|+-----------------------------------+|保存的寄存器(SI、DI等)|+---------------------------------

+<-典型BP|||||<-实际BP|局部变量||||||+------------------------------+<-SPI-

在我们的示例中,保存的寄存器区域是空的(因为在保存EBX和ESI之前已经初始化了EBP)。“典型BP”和“实际BP”之间的差值为0x78,这是FPD的值。

指定FPD=0x78后,示例的最后一条指令变为lea-eax,[ebp+78h+var_4],

其中var_4=-4

大多数时间,IDA自动计算FPD值。如果失败,用户可以手动指定值。

如果堆栈指针的值以不可预测的方式修改(例如“and esp,-16”),则IDA将该函数标记为“fuzzy-sp”。

如果为导入的函数调用此命令,则屏幕上将显示

一个简化的对话框。

展开阅读全文

标签:反汇编软件反编译软件

读者也访问过这里:
邀请您进入交流群 点击扫码
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 Pro动态调试教程需要配哪些环境 IDA Pro动态调试教程里断点通常下在哪里
光靠盯着反汇编和那些近似C语言的伪代码来看,很多分叉的执行路径其实还是很难吃准;所以大家就会关心IDA Pro的动态调试流程到底需要提前配好哪些环境,在实际操作里头断点一般又该下在什么地方比较管用,从自己拥有授权的测试小软件开始练手是一条比较稳当的路。在铺排环境的时候,不妨先把操作系统、处理器架构、程序要用的依赖库和输入文件都一一备齐,然后再顺着软件大致的执行路径,循序渐进地把中断位置加上去;这么做既能比较清楚地观察到程序是怎么跑起来的,也不容易被环境方面的小毛小病把思路搅乱。
2026-06-03
IDA Pro逆向教程练什么样本更合适 IDA Pro逆向教程里先练静态还是动态
刚开始学习IDA Pro的时候,如果一上来就选了过于复杂的样本,很容易就会陷进数量庞大的函数、库代码和异常分支里面,半天都理不出一个清晰的头绪。所以,先得弄明白两个很实际的问题:在IDA Pro的逆向学习过程中,到底该选什么样的样本来练手,以及在整个学习次序上,是应该先练静态分析,还是先练动态调试。一个比较稳妥的起步办法,是从自己动手编译的小型程序开始,先把程序的整体结构看明白,之后再打开调试器去验证自己之前的那些想法。练手用的文件范围,最好就严格限定在自编译程序、公开发布的教学样本,还有已经拿到明确授权的文件上面,不要直接去分析那些没有经过授权的商业软件,也尽量不要随便运行那些来源不明的程序。
2026-06-03
IDA Pro使用教程适合零基础吗 IDA Pro使用教程里哪些窗口最常用
很多人刚接触二进制分析的时候,很容易被IDA Pro的界面弄得不知所措,它的窗口多、地址多,汇编语句也排得密密麻麻。IDA Pro的使用教程到底适不适合零基础呢,答案是可以用来入门,只是不要刚上来就指望能看明白太复杂的样本。官方的入门资料里,也把IDA View、Pseudocode、Hex Dump View、Local Types和Functions View这几个窗口列为了初学者平时用得比较多的。所以零基础阶段最好先学会怎样加载文件、定位函数、查看字符串和跟踪调用关系,然后再逐步去补汇编与数据结构的知识,这样进入状态会更顺畅一些。
2026-06-03
IDA Pro下载教程该看哪个版本 IDA Pro下载教程安装后先检查哪些环境
刚开始使用IDA Pro的时候,要是教程的版本选得不对,后面很容易碰到各种别扭的情况。不同版本的软件,界面菜单的布局、许可证管理的方式、插件该放在哪个目录,还有一些功能入口的位置,都会跟着变化。按照Hex-Rays官方最新的发布记录,IDA 9.3sp1已经当成9.3系列的一个维护版本放出来了,它主要是改进了一下V850反编译器,顺带修了一些别的问题。如果是头一回装IDA,那优先去看9.3系列的教程会更合适;要是手上还在维护一些比较老的工程,那就应该根据机器上实际装的版本来找对应的资料,这样才不容易对不上号。
2026-06-03
IDA中文乱码通常和什么设置有关 IDA中文乱码出现后编码方式该怎么调整
在分析那些带有中文资源、日志文本或者配置内容的程序时,字符串窗口里时不时就会跳出问号、方框,或者干脆是一些没法阅读的字符。要弄清楚IDA里头的中文乱码通常跟哪些设置有关,还有乱码出现后编码方式该怎么去调整,先得分辨清楚这些乱码到底是出现在反汇编里的字符串、是Hex View右侧显示的那部分文本,还是旧数据库里留下来的注释。从7.0版本开始,IDA内部已经统一换成了UTF-8,但被分析的那个程序本身的原始字节,它照样可能用的是GBK、UTF-8、UTF-16LE这些不一样的编码,一旦判断错了,显示出来的东西就会不正常。
2026-06-03
IDA配置文件放在哪个目录 IDA配置文件改错以后怎么回退
很多人改IDA配置时,前面只是想调一个分析选项、界面行为或插件相关参数,结果一改完发现启动表现不对,甚至连原来的习惯都乱了。这个问题往往不是配置项本身有多复杂,而是没先分清IDA的配置文件到底放在安装目录还是用户目录,也没先想好改错以后该从哪一层回退。Hex-Rays官方文档已经把这条线说明白了,配置文件会按固定目录顺序查找,常见文件名也比较明确,所以只要先把目录和优先级理顺,后面的回退动作就会清楚很多。
2026-06-01

通过微信咨询我们

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

读者也喜欢这些内容: