用apktool反编译,修改添加smali文, 再打包apk遇到的64k问题的解决方法 Unsigned short value out of range: 65536
我把apk文件用apktool反编译后得到smali, smali_classes2, smali_classes3, smali_classes4..........
然后手工修改包里的smali文件, 增加了些内容进去,尝试再打包回apk文件时遇到错误. 上网查了一下原因.是我添加了东西,导致Unsigned short value out of range: 65536。 每个包长度超限了.
Exception in thread "main" org.jf.util.ExceptionWithContext: Exception occurred while writing code_item for method Lcom/google/gson/internal/b$b;-><init>(Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type;)V
at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1046)
at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:345)
at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:300)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:61)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:36)
at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:420)
at brut.androlib.Androlib.buildSources(Androlib.java:351)
at brut.androlib.Androlib.build(Androlib.java:303)
at brut.androlib.Androlib.build(Androlib.java:270)
at brut.apktool.Main.cmdBuild(Main.java:259)
at brut.apktool.Main.main(Main.java:85)
Caused by: org.jf.util.ExceptionWithContext: Error while writing instruction at code offset 0x39
at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1319)
at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1042)
... 10 more
Caused by: org.jf.util.ExceptionWithContext: Unsigned short value out of range: 65536
at org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116)
at org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:356)
at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1279)
... 11 more
为此问题,特意论坛上问了一下结果没人回答
网上找了个笨方法实现. 有位大神用python实现了, 命令如下.
解包
java -jar apktool_2.5.0.jar d D:\apk反编译\base.apk -f -r -s -o D:\apk反编译\base12301
#apktool反编译 不解源代码包 生成dev文件
python smali_decompile.py -d D:\apk反编译\base12301 -o D:\apk反编译\base12301 -m one
#运行python命令,将将原dex文件解出,整合到class目录
----------------------------------------------------------------
修改class目录里你想要修改的smali文件,例如添加类,
----------------------------------------------------------------
python smali_split.py -a D:\apk反编译\base12301\classes -o D:\apk反编译\base12301
# 将class文件再次分开打包成dex文件. 可以见到产生的dev数量比原来要多.
#将新产生的dev文件拷贝出来取代原来的dev
生成包
java -jar apktool_2.5.0.jar b D:\apk反编译\base12301 -o D:\apk反编译\base12301.apk
#编译成apk文件
签名
java -jar signapk.jar testkey.x509.pem testkey.pk8 D:\apk反编译\base12301.apk D:\apk反编译\base12301_final.apk
#对apk文件进行签名
本文所需所有工具下载地址
https://download.csdn.net/download/konglai/13986088
用apktool反编译,修改添加smali文, 再打包apk遇到的64k问题的解决方法 Unsigned short value out of range: 65536相关推荐
- apk反编译修改源代码_单击即可将APK反编译为源代码
apk反编译修改源代码 In this tutorial I will guide you how to decompile apk to source code in just one click. ...
- apktool反编译生成java_apktool反编译工具下载|apktool反编译工具 v3.0.1 最新版-520下载站...
apktool反编译工具是一款专业的apk编译工具,能够完美地反编译及回编译apk文件,想要使用apktool反编译工具的话就需要先安装JAVA,如果你想要修改apk文件,那么就需要先安装JAVA才可 ...
- apktool反编译及后续打包
资料 apktool下载地址 android studio 查看默认签名 apktool重打包失败原因之一分析: 微信使用apktool反编译后回编译出错 如何使用apktool解码,打包,签名 Ho ...
- Android逆向工程:解决针对小米系统应用,使用Apktool反编译失败问题!
不久前接到公司新的任务,要求破解小米的一款系统内置软件,名字是"小米账号",使用小米手机的小伙伴应该很熟悉了,在设置目录下的账号那里,主要使用它进行小米账号的登录操作.既然是破解, ...
- vc2010中开始执行不调试灰的_反编译动态调试smali全过程
点击上方蓝字关注我,每天进步一点点 大家都知道我们在逆向分析的时候,很多时候主要在分析逻辑.网络抓包.数据来源流向分析.页面逻辑跳转分析.动态调试等.由于很多代码都会混淆,很多时候我们直接通过代码可能 ...
- apktool反编译详细使用教程
apktool反编译详细使用教程,包括每个细节.还有为什么反编译不成功,反编译出现的各种情况将为大家详细写出来,如有写的不好的地方还请见谅,这些都是本人自学的,曾经请教过大神,让我悲剧的是尽然无一人为 ...
- ApkTool 反编译Android apk (加固逆向)
GitHub 源码地址(其实刚开始不必关注源码的实现,我们只需知道如何完成apk的反编译) https://github.com/iBotPeaches/Apktool 我们主要需要一个jar包和 . ...
- python apktool_【转】利用apktool反编译apk,并且重新签名打包
网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...
- Java原生调用apktool反编译及再次打包源码
大家一听到反编译.逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道 ...
最新文章
- 树莓派中找不到/dev/video0的解决方案及RaspberryCam的使用
- Spring RSocket:基于服务注册发现的 RSocket 负载均衡
- ajax post forbidden,POST方法总是返回403 Forbidden
- access vba表字段_vba中如何在access的一张表中得到所有的列名?
- XML--XML从入门到精通 Part 1 认识XML
- JavaScript异步
- html5实现微信支付宝接口,支付宝H5开放文档
- React Native在Android当中实践(一)——背景介绍
- Bzoj2535 [Noi2010]Plane 航空管制2
- 硬盘整数分区计算方法一般算法
- CSS-背景 超链接
- 新闻发布系统(java实现)+论文
- 流程:论文发表的流程
- 基于Python的指数基金量化投资——指数基金估值榜
- Python绘图实例35:漫天雪花绘制
- 如何成为一个原画场景大师
- 绝绝子!这些技巧真方便
- R5S RK3568运行安卓12搭配即插即用免驱免拨号的4G LTE模组测速演示
- JAVASCRIPT中THIS指的是什么?
- 程序员笑话全集,可悲的程序员
热门文章
- 【Linux】 常用命令
- C#中操作Word(9)—— 向Word中插入图表的三种方法(二)
- CPA十二--期末汇兑损益的处理(转载)
- 计算机二级软件java_全国计算机等级考试使用的java软件版本
- Cisco 3650交换机断电后配置无法保存
- 如何把带图片html转为doc,教您一招:如何将图片里面的文字转成word格式并能编辑...
- Linux gdb调试(4):多进程与多线程调试
- IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
- 英伟达 Tesla K80显卡驱动安装
- 计算机打字键盘怎么控制,键盘是怎样分区的,打字时每个手指分别可控制哪些键...