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 Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
ida怎么查找字符串 ida字符串窗口快捷键
在数字化时代,逆向工程作为解密软件和分析程序的关键技术,正日益受到广泛关注。在逆向分析的过程中,IDA(Interactive DisAssembler)是一款备受推崇的工具,它为逆向工程师们提供了强大的功能和灵活的操作。本文将带您深入探讨如何在IDA中查找字符串,优化字符串窗口的使用,并探讨IDA如何将变量转换成字符串,帮助您更加熟练地驾驭这一工具,为逆向分析的世界增添一抹精彩。
2023-09-27
最新文章
IDA反编译功能在软件安全审计中有何作用 怎么用IDA反编译功能分析程序的优化级别
在做软件安全审计的时候,程序的安全性和性能优化一直都是大难题。而说到分析程序的二进制代码,IDA反编译工具简直就是安全审计师的“瑞士军刀”。通过反编译,IDA能把难懂的机器码翻译成汇编语言,找出漏洞和优化空间。所以,今天我们就来聊聊“IDA反编译功能在软件安全审计中有何作用 怎么用IDA反编译功能分析程序的优化级别”,一起看看IDA到底有多强大。
2024-11-14
IDA反汇编如何进行二进制补丁分析 IDA反汇编后如何对程序进行静态分析
在软件安全和逆向工程领域,IDA Pro是一款非常受欢迎的工具。它能帮助我们深入分析二进制文件,今天,我们就来聊聊“IDA反汇编如何进行二进制补丁分析 IDA反汇编后如何对程序进行静态分析”这两个话题。希望通过这篇文章,能够让大家更好地运用IDA来进行相关分析。
2024-11-05
IDA软件反编译功能如何研究软件的动态链接库 IDA怎么反编译提取软件程序的调用关系图
在软件开发和安全领域,IDA软件真的是个非常强大的反编译工具。了解它的各种功能,尤其是在研究软件的动态链接库(DLL)时,绝对能让你的工作事半功倍。今天,我们就来聊聊“IDA软件反编译功能如何研究软件的动态链接库 IDA怎么反编译提取软件程序的调用关系图”这个话题,让你对IDA有更深入的认识。
2024-11-05
idapro怎么添加新常量 idapro的识别率怎么看
如果你是搞逆向分析的,那么IDA Pro你一定用过或者听说过。这款工具可真是个“神器”,但是用起来也有点“烧脑”,尤其是遇到一些小问题的时候,比如说“怎么添加新常量”,或者“识别率到底怎么看”。别担心,今天咱们就来好好聊聊这些问题,看看“idapro怎么添加新常量 idapro的识别率怎么看”这个话题,希望能让你在用IDA Pro的时候少踩坑,多顺利!
2024-10-30
IDA Pro Portal许可和程序下载安装
IDA Pro Portal许可和程序下载安装。Hex-rays IDA 现采用全新的Portal帐户中心交付方式,用户购买后登录Hex-rays Portal 获取许可和程序,不再邮件发送许可文件和程序。
2024-10-25
ida伪代码是什么语言 如何看懂ida伪c代码
在软件逆向工程里,IDA 这款工具特别有名。它可以帮我们把机器码变成更容易理解的代码。很多人觉得直接看汇编代码太难,于是 IDA 提供了伪代码功能,能把这些机器码“翻译”成像 C 语言那样的代码,方便我们理解。所以,今天我们就来聊聊“ida伪代码是什么语言 如何看懂ida伪c代码”这个问题,希望能让你对IDA伪代码有更清晰的认识。
2024-10-18

通过微信咨询我们

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

读者也喜欢这些内容: