反编译和逆向出现:java.lang.VerifyError(新问题样本)
PS:要转载请注明出处,本人版权所有。
PS: 这个只是基于《我自己》的理解,
如果和你的原则及想法相冲突,请谅解,勿喷。
前置说明
本文作为本人csdn blog的主站的备份。(BlogID=049)
本文发布于 2017-12-22 15:54:49,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=049)
环境说明
无
前言
某日,遇到一个App,突然想来一发,于是,直接下到这个app的老一点的版本,用某自动脱壳机脱壳后,得到Dex文件。并通过工具(AndroidKiller)生成Smali文件(此文件不完整)
java.lang.VerifyError
首先,把Smali文件放回到我们反编译后的Apk文件目录去,修复相关的类目录。这时候,在通过工具,把整个工程重新编译生成Apk,是可以正常安装的,但是不能够正常打开,并且得到java.lang.VerifyError错误。
经过大量的搜索和整理,得到如下结论。
此错的原因为:由于smali指令序列不符合相关的规范(指令丢失,反编译失败了,或者指令反编译错误,得到了错误的smali指令。对于反编译失败,相关的反编译工具(AndroidKiller)可能会在当前字段出现标注,根据标注解决就好)。
网上现存的不规范的原因:
- 寄存器使用数量和定义个数不一致(用脚本很容易出现此问题)
- 函数体不完整,丢失相关标识符.end method等
java.lang.VerifyError 新问题样本
- 反编译出问题的东西大部分在构造函数,init()方法大部分都出现在缺少return-void
- 当前类继承的interface,父类为java object ,出现 没有调用java object - > init()方法
对于以上问题,其实相关工具会在smali文件里面存在 #disallowed odex opcode错误,直接搜索就可以解决。
后记
无
参考文献
- 无
打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)

PS: 请尊重原创,不喜勿喷。
PS: 要转载请注明出处,本人版权所有。
PS: 有问题请留言,看到后我会第一时间回复。
反编译和逆向出现:java.lang.VerifyError(新问题样本)的更多相关文章
- java.lang.VerifyError异常
以前遇到过java.lang.VerifyError 原因是jar包冲突 tomcat6自带jsp.jar.servlet.jar所以项目中不用引入 tomcat5不带jsp.jar.servlet. ...
- java.lang.VerifyError: Inconsistent stackmap frames at branch target 81
java项目中有如下代码: @RequestMapping(value = "/getMxList") @ResponseBody public Map<String, Ob ...
- nested exception is java.lang.VerifyError: Expecting a stackmap frame at bra
Caused by: java.lang.VerifyError: Expecting a stackmap frame (2016-05-19 09:56:29) 转载▼ 标签: it 分类: Ja ...
- intellij idea 添加动态 user library(java.lang.VerifyError)【转】
使用IDEA的时候有时要用到eclipse的user library,由于两个IDE导入library的方式不同导致我们找不到导入user library的方法. 查IDEA的官方文档,找到方法如下: ...
- - 反编译 AndroidKiller 逆向 实践案例 MD
目录 目录 反编译 AndroidKiller 逆向 实践案例 MD AndroidKiller 简介 插件升级 基本使用 实践案例 修改清单文件 打印 debug 级别的日志 方式一:直接代理 Lo ...
- Jedis:Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception in thread "main" java.lang.VerifyError: Bad type on operand stackException Detai ...
- hadoop+javaWeb的开发中遇到包冲突问题(java.lang.VerifyError)
1.HDFS + WEB 项目 报java.lang.VerifyError... 异常 抛异常: Exception in thread "main" java.lang.Ver ...
- jedis:exception is java.lang.VerifyError: Bad type on operand stack
项目中需要用到缓存,经过比较后,选择了redis,客户端使用jedis连接,也使用到了spring提供的spring-data-redis.配置正确后启动tomcat,发现如下异常: ======== ...
- Java反编译利器-Jad, Jode, Java Decompiler等及其IDE插件
转自:http://blog.csdn.net/superbeck/article/details/5189231 对于长年使用Java的程序员,大部分应该都会或多或少的使用到反编译软件.毕竟,不可能 ...
- 9、android开发之java.lang.verifyError(转载)
原文链接: http://www.linuxidc.com/Linux/2012-08/67289.htm 解决方案: 最近在做一个Android开发小项目的时候,遇到java.lang.verify ...
随机推荐
- TortoiseSVN 官网打不开,去哪下最新的软件和中文包?
官网:https://tortoisesvn.net 能打开最好,但通常打不开,打不开时候去这个网站下: https://sourceforge.net/projects/tortoisesvn/ 这 ...
- IIS创建和管理虚拟网站
实验介绍: 本文会详细介绍创建虚拟站点的三种方法 一:IP地址建立站点 1.打开安装了IIS的windows,进入ip配置页面. 添加几个ip,我这里添加的是192.168.1.209,192.168 ...
- 线性SVM决策过程的可视化
线性 SVM 决策过程的可视化 导入模块 from sklearn.datasets import make_blobs from sklearn.svm import SVC import matp ...
- 快速上手typescript(基础篇)
壹 ❀ 引 在javascript开发中,你可能也遇到过我这样的苦恼,在维护某段几年前的老旧代码时,我发现了某个数据加工方法fn,而且根据现有逻辑来看fn的某个参数是一个数组,因为新需求我需要对数组做 ...
- Python递归遍历目录并删除文件中的前N行
1 import os 2 3 # 遍历目录下的所有文件 4 def check_file(file_path): 5 os.chdir(file_path) 6 print(os.path.absp ...
- ORACLE SEQUENCE 详解
1. About Sequences(关于序列) 序列是数据库对象一种.多个用户可以通过序列生成连续的数字以此来实现主键字段的自动.唯一增长,并且一个序列可为多列.多表同时使用. 序列消除了串行 ...
- vscode添加自定义html片段
最近在学vue,用的是微软的vscode 开发工具. 很不错,赞一下微软.里面包含了众多插件大家可以各取所需. 另外有一项实用的功能,User Snippets 用户自定义代码段, 对于那些需要重复编 ...
- js获取格式化日期方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 石子合并(区间dp+记忆化搜索)
经典例题:石子合并 题目链接 N 堆石子排成一行,现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.计算合并最小得分. 方法一.区间dp ...
- Jenkins流水线使用@Grab 导入Maven库
有个需求需要在pipeline中调用Java的SDK去执行业务 使用 @Grab 注解可以在Maven中导入Java 库, @Grab('org.apache.commons:commons-math ...