我把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相关推荐

  1. apk反编译修改源代码_单击即可将APK反编译为源代码

    apk反编译修改源代码 In this tutorial I will guide you how to decompile apk to source code in just one click. ...

  2. apktool反编译生成java_apktool反编译工具下载|apktool反编译工具 v3.0.1 最新版-520下载站...

    apktool反编译工具是一款专业的apk编译工具,能够完美地反编译及回编译apk文件,想要使用apktool反编译工具的话就需要先安装JAVA,如果你想要修改apk文件,那么就需要先安装JAVA才可 ...

  3. apktool反编译及后续打包

    资料 apktool下载地址 android studio 查看默认签名 apktool重打包失败原因之一分析: 微信使用apktool反编译后回编译出错 如何使用apktool解码,打包,签名 Ho ...

  4. Android逆向工程:解决针对小米系统应用,使用Apktool反编译失败问题!

    不久前接到公司新的任务,要求破解小米的一款系统内置软件,名字是"小米账号",使用小米手机的小伙伴应该很熟悉了,在设置目录下的账号那里,主要使用它进行小米账号的登录操作.既然是破解, ...

  5. vc2010中开始执行不调试灰的_反编译动态调试smali全过程

    点击上方蓝字关注我,每天进步一点点 大家都知道我们在逆向分析的时候,很多时候主要在分析逻辑.网络抓包.数据来源流向分析.页面逻辑跳转分析.动态调试等.由于很多代码都会混淆,很多时候我们直接通过代码可能 ...

  6. apktool反编译详细使用教程

    apktool反编译详细使用教程,包括每个细节.还有为什么反编译不成功,反编译出现的各种情况将为大家详细写出来,如有写的不好的地方还请见谅,这些都是本人自学的,曾经请教过大神,让我悲剧的是尽然无一人为 ...

  7. ApkTool 反编译Android apk (加固逆向)

    GitHub 源码地址(其实刚开始不必关注源码的实现,我们只需知道如何完成apk的反编译) https://github.com/iBotPeaches/Apktool 我们主要需要一个jar包和 . ...

  8. python apktool_【转】利用apktool反编译apk,并且重新签名打包

    网站:https://ibotpeaches.github.io/Apktool,下载安装好apktool. 我的安装在 C:\Users\Administrator\Downloads\apktoo ...

  9. Java原生调用apktool反编译及再次打包源码

    大家一听到反编译.逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道 ...

最新文章

  1. 树莓派中找不到/dev/video0的解决方案及RaspberryCam的使用
  2. Spring RSocket:基于服务注册发现的 RSocket 负载均衡
  3. ajax post forbidden,POST方法总是返回403 Forbidden
  4. access vba表字段_vba中如何在access的一张表中得到所有的列名?
  5. XML--XML从入门到精通 Part 1 认识XML
  6. JavaScript异步
  7. html5实现微信支付宝接口,支付宝H5开放文档
  8. React Native在Android当中实践(一)——背景介绍
  9. Bzoj2535 [Noi2010]Plane 航空管制2
  10. 硬盘整数分区计算方法一般算法
  11. CSS-背景 超链接
  12. 新闻发布系统(java实现)+论文
  13. 流程:论文发表的流程
  14. 基于Python的指数基金量化投资——指数基金估值榜
  15. Python绘图实例35:漫天雪花绘制
  16. 如何成为一个原画场景大师
  17. 绝绝子!这些技巧真方便
  18. R5S RK3568运行安卓12搭配即插即用免驱免拨号的4G LTE模组测速演示
  19. JAVASCRIPT中THIS指的是什么?
  20. 程序员笑话全集,可悲的程序员

热门文章

  1. 【Linux】 常用命令
  2. C#中操作Word(9)—— 向Word中插入图表的三种方法(二)
  3. CPA十二--期末汇兑损益的处理(转载)
  4. 计算机二级软件java_全国计算机等级考试使用的java软件版本
  5. Cisco 3650交换机断电后配置无法保存
  6. 如何把带图片html转为doc,教您一招:如何将图片里面的文字转成word格式并能编辑...
  7. Linux gdb调试(4):多进程与多线程调试
  8. IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
  9. 英伟达 Tesla K80显卡驱动安装
  10. 计算机打字键盘怎么控制,键盘是怎样分区的,打字时每个手指分别可控制哪些键...