首页 > 其他分享 >ida pro switch 修复

ida pro switch 修复

时间:2024-02-27 11:11:07浏览次数:28  
标签:__ pro 地址 jump switch 跳表 table ida

修复switch

相关链接:

Igor’s tip of the week #53: Manual switch idioms – Hex Rays (hex-rays.com)

IDA switch 在跳表结构下的修复 - blog of chuj (cjovi.icu)

举例:

image

__int64 __fastcall PayloadProfiler::qt_static_metacall(__int64 a1, int a2, unsigned int a3)
{
  __int64 result; // rax

  __endbr64();
  if ( !a2 && a3 <= 5 )
    // switch 
    return ((__int64 (*)(void))((char *)dword_91C980 + dword_91C980[a3]))();

  return result;
}

修复:

将光标放在间接分支上并调用 Edit > Other > Specify switch idiom...

  • Address of Jump table:设置成 jump table 的地址
  • Number of elements:设置为 jump table 中存在的元素总数
  • Size of table element:设置为 jump table 中元素的类型
  • Element shift amount:这个一般情况下都是零,和跳表计算时的方式有关,比如此题只是单纯的跳表地址加跳表中的元素,那么就不需要移位
  • Element base value:设置为计算跳转地址时给跳表元素加的值,比如此题的计算方法为 &jump_table + jump_table[i],那么这里就应该填跳表的地址
  • Start of the switch idiom:这个默认就行,就是获取跳表值的语句的地址
  • Input register of switch:设置为用于给跳表寻址的寄存器
  • First(lowest) input value:就是 switch 的最小值了
  • Default jump address:也就是 default 的跳转位置,其实有时候可以不填,但是最好还是填上,这个一般在上方不远处的 cmp 指令附近,特征就是判断了输入,然后跳转到某个地址上,跳转的这个地址就是要填的值了(上图中填的值是错误的,但是即使填错了似乎也没有影响最后的分析,所以可以放轻松啦~)。

image
image
修复后

image

标签:__,pro,地址,jump,switch,跳表,table,ida
From: https://www.cnblogs.com/DirWang/p/18036475

相关文章

  • Large Scale Product Graph Construction for Recommendation in E-commerce论文阅读
    Abstract​ 大规模的推荐系统通常严重依赖于预先构建的产品索引来加速推荐服务,从而使等待时间较长。一个重要的索引结构是产品-产品索引,在这里可以检索给定种子产品的排名产品列表。该指数可以看作是一个加权的产品-产品图。​ 在本文中,我们提出了一种能够有效地构建这类索引产......
  • react ProTable树默认只展示第一层和第二层
    要在AntDesignPro中的ProTable组件中默认展开第一层和第二层,您可以使用expandable的defaultExpandAllRows选项结合expandedRowKeys来实现。以下是一个示例代码,演示如何在AntDesignPro中的ProTable组件中默认展示第一层和第二层:import{ProTable}from'@an......
  • antd proTable 默认展开所有层
    antdproTable默认展开所有层expandable={{defaultExpandAllRows:true}}importReactfrom'react';import{ProTable}from'@ant-design/pro-table';constcolumns=[{title:'Name',dataIndex:'name',ke......
  • [ida插件]IDAPyHelper
    https://github.com/patois/IDAPyHelper修改为插件,可放到plugins目录下,Alt+h调用IDAPyHelper是交互式反汇编器的脚本,可帮助编写IDAPython脚本和插件。它通过获取可通过IDAPython访问的所有名称来实现这一点,并将它们放在一个可浏览的列表中,该列表可以任意排序、扫描(Alt-T......
  • ProtoBuffer-nanopb介绍
    目录一、需求二、环境三、相关概念3.1protocolbuffer介绍3.2nanopb(支持C语言)3.3proto文件四、proto基本语法4.1proto文件的定义4.2字段规则4.3字段类型4.4字段编号4.5proto语法4.6进阶语法4.6.1message嵌套4.6.2enum关键字4.6.3oneof关键字五、nanopb分析5.1nanopb......
  • 都说了别用BeanUtils.copyProperties,这不翻车了吧
    分享是最有效的学习方式。博客:https://blog.ktdaddy.com/故事新年新气象,小猫也是踏上了新年新征程,自从小猫按照老猫给的建议【系统梳理大法】完完整整地梳理完毕系统之后,小猫对整个系统的把控可谓又是上到可一个新的高度。开工一周,事情还不是很多,寥寥几个需求,小猫分分钟搞定......
  • Java代码混淆工具:ProGuard
    前言java代码可以反编译,因此有时候要保护自己的知识产权还得费点心思,一般来说有三个思路:将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文件,Lombok库就是使用的这种方式(lombok.launch.ShadowClassLoader)。使用花指令,使得class文件不能反编译(利用......
  • Backpropagation
    backpropagation(反向传播)在计算gradient的vector时可以有效率地把vector计算出来我们先考虑一个neuron考虑链式法则,现计算$\frac{\partialz}{\partialw}$,计算较为简单,规律发现就是input以上步骤就叫forwardpass,接下来介绍backwardpass,即计算$\frac{\partialC}{\parti......
  • @Valid和@Validated区别
    @Valid和@Validated都是用来在Java中进行数据校验的注解,但它们来自不同的框架并服务于不同的目的:@Valid:@Valid是JavaEE(现在是JakartaEE)规范的一部分,具体来说是JSR303/JSR349(BeanValidation)的标准注解。它用于验证对象属性,当使用在方法参数上时,会在方法调用前自动触发......
  • BOSHIDA 提高效率的DC电源模块设计技巧
    BOSHIDA提高效率的DC电源模块设计技巧设计高效率的BOSHIDADC电源模块可以帮助减少能源浪费和提高系统功耗,以下是一些设计技巧: 1.选择高效率的功率转换器:选择具有高效率的开关电源作为电源模块的核心。开关电源通常比线性电源具有更高的转换效率,可以将输入电压转换为所需的......