给IDA中的寄存器变量命名的技巧

转载 2016年08月30日 23:10:30

前言

release版中, 尽最大可能使用寄存器变量.
如果一个寄存器变量在一段程序中, 在前10行是一个含义, 在后10行是另外一个含义, 看起来很头痛.
今天看了IDA中改名的UI上有参数可以指定改名的地址范围, 正好解决了这个问题.
逆向过程中的反汇编代码的可读性提高很多

改名后的例子

.text:00401000 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:00401000 _main           proc near               ; CODE XREF: start+AFp
.text:00401000
.text:00401000 iIn             = dword ptr -4
.text:00401000
.text:00401000 divisor = esi                           ; 除数
.text:00401000                 push    ecx
.text:00401001                 push    divisor
.text:00401002                 push    edi             ; 保存环境
.text:00401002                                         ; ;
.text:00401003 iUserInputBk = edi                      ; 用户输入
.text:00401003 INPUT_HALF = ecx                        ; 用户输入数值的一半
.text:00401003                 push    offset msg1     ; "请输入:"
.text:00401008                 call    _printf
.text:0040100D                 lea     eax, [esp+10h+iIn]
.text:00401011                 push    eax
.text:00401012                 push    offset Format   ; "%d"
.text:00401017                 call    _scanf
.text:0040101C                 mov     iUserInputBk, [esp+18h+iIn]
.text:00401020                 mov     divisor, 2
.text:00401025                 mov     eax, iUserInputBk
.text:00401027                 add     esp, 0Ch        ; 平栈 printf和scanf
.text:0040102A                 cdq
.text:0040102B                 sub     eax, edx
.text:0040102D                 mov     INPUT_HALF, eax
.text:0040102F                 sar     INPUT_HALF, 1
.text:00401031                 cmp     INPUT_HALF, divisor
.text:00401033                 jl      short L_WAS_PRIME
.text:00401035
.text:00401035 PARSE_INPUT:                            ; CODE XREF: _main+41j
.text:00401035                 mov     eax, iUserInputBk
.text:00401037                 cdq
.text:00401038                 idiv    divisor
.text:0040103A                 test    edx, edx        ; edx中余数
.text:0040103C                 jz      short L_NOT_PRIME
.text:0040103E                 inc     divisor
.text:0040103F                 cmp     divisor, INPUT_HALF
.text:00401041                 jle     short PARSE_INPUT
.text:00401043
.text:00401043 L_WAS_PRIME:                            ; CODE XREF: _main+33j
.text:00401043                 push    offset msg2     ; "是素
.text:00401048                 call    _printf
.text:0040104D                 add     esp, 4
.text:00401050                 xor     eax, eax        ; ;
.text:00401050                                         ; ;
.text:00401052                 pop     edi             ; 恢复环境
.text:00401053                 pop     divisor
.text:00401054                 pop     ecx
.text:00401055                 retn
.text:00401056 ; ---------------------------------------------------------------------------

改名时的地址范围图例

Start address 和 End address默认是函数范围内有效, 改成在函数内需要的生效范围(只指定包含特定用途的地址范围).
这里写图片描述

6.IDA-重命名、注释

由于IDA基础数据库的本质,你对反汇编代码所做的更改将迅速“扩散”到IDA的所有子窗口中,以使反汇编代码保持一致 说明 记住,IDA不提供撤销功能。在操纵数据库时,请一定记住这一点。你所能做的,就是经...
  • hgy413
  • hgy413
  • 2011年12月20日 20:53
  • 4505

Android NDK: Your APP_BUILD_SCRIPT points to an unknown file:

我的报错信息如下: Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: D:\Android\workspace/jni/And...

Android静态安全检测 -> 敏感函数调用风险

敏感函数调用风险 一、API 【1】android.telephony.TelephonyManager.getNetworkOperator( )   获取运营商信息 【2】androi...

Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句

我们继续分析自毁程序密码这个app,我们发现该程序会用fopen ()打开/proc/[pid]/status这个文件,随后会用fgets()和strstr()来获取,于是我们在strstr()处下个...

IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总

 ********************************** 案例一: 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函...

Android安卓破解之逆向分析SO常用的IDA分析技巧

1、结构体的创建及导入,结构体指针等。 以JniNativeInterface, DexHeader为例。 解析Dex的函数如下: F5后如下: File->load...
  • asmcvc
  • asmcvc
  • 2016年03月31日 14:21
  • 5667

【IDA】使用技巧及大杂烩

IDA Pro基本简介  IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window)。 IDA图...

IDA调试 android so文件的10个技巧

在android调试过程中,经常会遇到一些小问题以及解决的方法分享给大家,抛砖引玉。。。...
  • oooAooo
  • oooAooo
  • 2017年11月27日 10:11
  • 45

IDA Pro使用技巧及大杂烩

IDA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window)。 IDA图形视图会有执行流,Yes箭头默认为绿色...

Linux kernel 分析之十九:阅读源代码技巧-变量命名规则

在阅读源代码的时候,经常会发现在跟踪函数调用时跟踪不下去了,如result = dir->i_op->lookup(parent_inode, child_dentry, nd); 这类似于C++中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给IDA中的寄存器变量命名的技巧
举报原因:
原因补充:

(最多只允许输入30个字)