ida编译arm汇编出现JUMPOUT的解决方案

首先可以通过在反汇编得到的的c代码里确定JUMPOUT在汇编代码的位置

之后在汇编代码中跳转到该地址,应该可以看到一个跳转指令(B,BL,BX等)。

由于IDA无法识别跳转指令的跳转地址,所以会出现JUMPOUT的情况。

想要去除JUMPOUT,就要由我们自己将这个跳转指令算出来。手动将算出来的地址写入汇编指令,代替原来的跳转地址。

跳转指令计算方式:

1.通过前面的代码直接算相应寄存器的值,这个方法需要一定的经验

2.直接hook跳转指令,把相应寄存器的值打印出来,打印出来的值如果都是相同的则可以直接修复,不相同则说明这里的跳转是动态的

修改方法:工具栏 -> Edit -> Patch Program -> Change byte...

arm32位和64位的修改方式略有不同

32位:

上面是修复前的指令,下面是修复后的。修复 JUMPOUT需要更改前两个字节,第一个字节是偏移量,每+1跳转的目标地址就会+2,第二个字节是固定的E0表示跳转指令B

64位:

需要修改的是前4个字节,其中第一个字节是偏移量,每+1偏移地址会+4,第二,三个字节应该也是偏移量(不确定)第4个字节是固定的14表示跳转指令B 。

arm汇编代码有两种指令集,arm和thumb使用上面的方式更改指令后如果结果不正确可以试试更换指令集的方式再试一下,更改的方法:

mac上快捷键是option+g

修改value即可

另外,也会出现跳转指令无法计算的情况。这是由于静态代码中的方法需要动态传入参数,参数占用的地址不确定,导致无法静态计算最后的跳转地址,这时候就要结合动态分析来确定最终跳转地址。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IDA Pro是一款非常专业的可编程、可扩展的交互式多处理器反汇编程序。它是逆向工程师、安全分析人员和CTF竞赛选手常用的工具之一。IDA Pro支持多种CPU指令集,包括Intel x86、x64、MIPS、PowerPC、ARM、Z80、68000、c8051等等。它使用数据类型信息和派生的变量和函数名称来注释生成的反汇编代码,并提供符号化信息。IDA Pro还支持Python插件,用户可以利用插件来提供更多的功能,大大减少工作量。它还采用了先进的逆向工程技术,能够帮助用户反向编译源代码,并解决反编译相关问题。总的来说,IDA Pro是反编译领域中不可或缺的工具之一。 要安装和使用IDA Pro,您可以按照以下步骤操作: 1. 在官方网站下载IDA Pro软件包并解压缩。 2. 运行"IDAProHelper.exe"程序进行绿化。 3. 运行主程序,选择适合您的操作系统的版本。 4. 新建一个空程序,然后加载要逆向的文件。 5. 可以使用工具栏和导航栏浏览和分析加载文件的反汇编代码。 6. 您还可以打开其他窗口,如Hex_View窗口、Exports窗口和functions窗口,以获取更多的信息。 7. 最后,记得保存您的工作。 以上是关于IDA Pro反编译工具的简要介绍和安装使用步骤。希望对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用ida pro做反编译时,要注意类型转换](https://blog.csdn.net/zhangzhm/article/details/93861843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [反编汇ida pro 7.5](https://blog.csdn.net/weixin_45078818/article/details/111359136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值