上一节我们介绍了一种利用无效字节码指令引发逆向工具崩溃的方法。(http://www.cnblogs.com/Niger123/p/4530054.html)可惜的是大部分反编译工具已经修复了该bug。但是如果我们插入有效的字节码指令,但是后跟无效的数据引用,结果会是怎么样呢?

使用C32asm,以十六进制的方式打开dex文件。按快捷键“Ctrl + G”,定位到“0003A2A4”

把“62 00 02 04 1A 01 8E 07  6E 20 19 10 10 00”改为“12 01 38 01 03 00 1A 00 FF FF 00 00 00  00”(不清楚的可以看上一篇文章)

Opcodes解释:

12 01  //  const/4  v1, 0 //v1=0

38 01 03 00  //  if-eqz   v1, loc_3A2AC //if(v1==0) 跳转到 loc_3A2AC:

1A 00 FF FF //  const-string v0,(不存在的引用 FFFF)

// 本行代码被跳过,永远不会执行

// loc_3A2AC:

保存dex。把修改后的dex文件拖入DexFixer进行修复。

用修复后的dex覆盖原apk中的dex文件。

删除META-INF签名文件

使用签名工具,对apk重新签名。

Apk安装到手机,运行成功

下面试试反逆向工具的效果

Apktool:(反编译失败)

Dex2jar:(反编译失败)

用到的工具:

IDA :http://pan.baidu.com/share/link?shareid=132208&uk=1795434040

C32Asm :http://www.crsky.com/soft/3128.html

DexFixer:http://bbs.pediy.com/showthread.php?p=1158816

Ijiami signer:http://t.cn/R2tfvdP  (下载此签名工具需登录注册http://t.cn/R2tfAiC)

转载于:https://www.cnblogs.com/Niger123/p/4535180.html

利用无效字节码指令引发逆向工具崩溃(二)相关推荐

  1. 你还在为怎么查看字节码指令而担忧吗?

    来自:烟雨星空 前言 我们平时编码过程中,可能很少去查看 Java 文件编译后的字节码指令.但是,不管你是因为对技术非常热爱,喜欢刨根问底,还是想在别人面前装X .我认为,都非常有必要了解一下常见的字 ...

  2. java虚拟机编译_[四] java虚拟机JVM编译器编译代码简介 字节码指令实例 代码到底编译成了什么形式...

    前言简介 前文已经对虚拟机进行过了简单的介绍,并且也对class文件结构,以及字节码指令进行了详尽的说明 想要了解JVM的运行机制,以及如何优化你的代码,你还需要了解一下,java编译器到底是如何编译 ...

  3. Java的Class类文件结构及基本字节码指令

    Class类文件的结构 概念:Class文件是一组以8位字节为基础单位的二进制流 按顺序整齐排列 没有任何分隔符,内容全部是运行时的必要数据,没有空隙存在 排序方式:高位在前 Big-Endian:最 ...

  4. JVM004_字节码指令简介

    字节码指令简介 Java虚拟机指令由操作码(Opcode)和跟随其后的零至多个操作数(Operand)组成. 操作码:一个字节长度的,代表某种特定操作含义的数字. 操作数:操作码需要的参数. 字节码与 ...

  5. Java虚拟机专题之字节码指令(读书笔记)

    一 字节码与数据类型 大部分的指令都包含了其操作所对应的数据类型信息. 比如iload指令用于从局部变量表中加载int类型的数据到操作栈中,而fload指令加载的则是float数据类型的数据. 二 加 ...

  6. JVM学习-字节码指令

    目录 1.入门 2 javap 工具 3 图解方法执行流程 3.1.原始 java 代码 3.2.编译后的字节码文件 3.3.常量池载入运行时常量池 3.4.方法字节码载入方法区 3.5.main 线 ...

  7. Java字节码,字节码指令

    目录 字节码 字节码指令分类 方法栈和栈帧(操作数栈,局部变量数组) 字节码指令 操作数栈相关指令 局部变量数组相关的指令 将常量加载到操作数栈上的指令 高层语义的字节码指令 字段访问指令 方法调用指 ...

  8. JVM笔记:Java虚拟机的字节码指令详解

    1.字节码 Java能发展到现在,其"一次编译,多处运行"的功能功不可没,这里最主要的功劳就是JVM和字节码了,在不同平台和操作系统上根据JVM规范的定制JVM可以运行相同字节码( ...

  9. 【JVM源码解析】模板解释器解释执行Java字节码指令(上)

    本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布 第17章-x86-64寄存器 不同的CPU都能够解释的机器语言的体系称为指令集架构(ISA,Instruction Set Archit ...

最新文章

  1. inline-block空隙怎么解决
  2. MySQL 水平分区方案Spock Proxy
  3. linux虚拟机镜像_无树莓派硬件体验:虚拟机安装 Raspberry Pi Desktop 操作系统
  4. JVM NativeMemoryTracking 分析堆外内存泄露
  5. 2021高考查询成绩公众号,2021高考成绩怎么查 什么时候查
  6. taxtable java_C语言计算个人所得税问题代码及解析
  7. 判断一个变量是否是Array类型
  8. 关于elasticsearch boostrap checks failed错误类型整理及解决方法
  9. poj Gone Fishing 枚举加贪心 当初做的很纠结啊!!终于A了,与大家分享一下经验
  10. 8.1 Zend_View(2)
  11. 解决 win10飞行模式 无限自动开关 无法关闭
  12. Coreldraw 制作透明小水滴按钮(转)
  13. Qt编译QtXlsx库
  14. C报错ld returned 1 exit status可能的原因
  15. springMVC Controller层接收 JSON参数遇到得问题
  16. 求n的阶乘并显示过程
  17. 软件设计师之根据16进制内存地址计算内存大小(超详细)
  18. V语言(Vlang)初探
  19. python中非0即True,0即False
  20. 无人驾驶算法学习(七):基于事件的视觉里程计

热门文章

  1. 「高效程序员的修炼」代码版本管理工具 Git 用起来 01 Git 基础
  2. linux_FIFO命名管道-mkfifo函数-进程通信
  3. realpath函数使用注意事项
  4. 如何让企业员工不觉得知识库是个鸡肋,附带工具推荐
  5. 电影《驯龙高手1》中的管理知识
  6. PHP_保留两位小数并且四舍五入(可用于精度计算)_保留两位小数并且不四舍五入,
  7. 计算机附录的相关文件,计算机化系统附录与计算机文件编制验证实际操作2.pptx...
  8. nodejs高考志愿填报辅助系统的设计与实现vue
  9. Prettier + Vetur 进行Vue2项目代码格式化
  10. AI-040: Python深度学习3 - 三个Karas实例-2