学习
实践
活动
专区
工具
TVP
写文章

利用apktool查看apk代码

一、首先下载反编译工具包 下载地址   链接:https://pan.baidu.com/s/1CEo93BjAKes-xElp47XlHQ 密码:jyia 1.apktool:由于直接改apk后缀进行解压的话打开的 xml文件会乱码,所以我们使用apktool工具查看apk的xml文件、AndroidManifest.xml和图片等 2.dex2jar:classes.dex转换成jar包 3.jd-gui:查看jar 文件的java代码 二、下载之后,将需要反编译的apk放到apktools同级目录下,并且在apktools下级目录,按住shift+鼠标右键,选择在此处打开命令窗口,之后运行代码  apktool d yd.apk(你安装包的名字) 三、将apk后缀名改成zip。 之后用解压软件进行解压,得到一个文件如下 这样看到的xml格式是乱码的  所以使用apktool去释放apk才不会乱码 四、将classes.dex打包成jar包 需要用到dex2jar,同样的方法,

18820
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    APK加固之类抽取分析修复

    0x01 APK加固前后对比 整体来看一下原始APK包和加固后的APK包结构相关变化 图1所示加固后的APK包变化如下: 新增2个文件夹: assets文件夹中增加3个文件 data dx pk lib , 反编译出错,错误日志如下: 从图2可以看出反编译时出现了很多错误,我们用IDA对DEX进行反编译查看代码,发现方法指令都被零填充了,反编译后代码显示为nop样式,如图3所示。 图3 我们再来看看APK中的AndroidManifest.xml文件被修改了什么地方? ,这里只贴出部分代码详细的请看工程,代码写得比较粗操,看下思路就行了,有性趣的就慢慢撸吧! 中assets文件夹中的data文件classes.dex放在修复程序同一个目录中,然后运行修复程序。

    1.3K00

    Java基础6:代码代码加载顺序

    本文主要介绍了三种代码块的特性和使用方法。 代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 public class } } 静态代码块 位置:类成员位置,用static修饰的代码块 作用:对类进行一些初始化 只加载一次,当new多个对象时,只有第一次会调用静态代码块,因为,静态代码块 C(); C c2 = new C(); //结果,静态代码块只会调用一次,类的所有对象共享该代码块 //一般用于类的全局信息初始化 //静态代码块调用 //代码块调用 /details/80061047 关于Java类和包的内容可以在下一节查看: https://blog.csdn.net/a724888/article/details/80069504

    25400

    关于java中普通代码块、构造代码静态代码

    1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。 ; {   System.out.println("这里是普通代码块B"); } } 执行结果:这里是普通代码块A      这里是普通代码块B 2.静态代码构造代码块 在java 如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行。 ps:1 静态代码块不能存在于任何方法体内。 1"); } { System.out.println("这里是A中的普通代码块2"); } } 执行结果: 这里是静态代码块 这里是普通代码块A 这里是A中的普静态代码块1 这里是A中的普通代码块 1 这里是A中的普通代码块2 这里是普通代码块B 优先级总结:静态代码块>Main()>构造代码

    50930

    【连载】聊聊 APK(二)——Dex 热修复 Classpath

    想进大厂,就关注「 程序亦非猿 」 时不时 8:38 推送优质文章,觉得有用,置顶加星标 船长导读:「聊聊 APK」系列由我好基友 Gemini 老师提供 上一篇文章《聊聊 APK —— 直接运行 Dex 热修复 Classloader 参照腾讯开源的 Tinker 和阿里的 DexPatch 的原理,我们知道对于现在对于 java 代码的热修复主要从 DexClassLoader 里面的 dexPathList Android 提供的 DexClassloader 是按提供的 dex 顺序找的,因此对于 java 代码的热修复变得很简单 —— 只要把想要被修复的 Dex 放到最前面,加载相关的类就好了,Tinker 看图可以看见非常顺利,我们构造了一个“有Bug”的 Dex,假设这个 Dex 目前存在于我们的 apk 里面,那我们如何使用一个新的 Dex 去覆盖我们的 Test.run 方法呢? 构造修复后的 Dex 很简单,首先,在相同的类里面,把我们的代码改了,比如这样,在 Test.java 中: public class Test { public void run() {

    37830

    Java 常见内存溢出异常代码实现

    Java 堆 OutOfMemoryError Java 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的对象过多时 编译运行上述代码后, 会有如下输出: ? Java 栈 StackOverflowError 我们知道, JVM 的运行时数据区中有一个叫做 虚拟机栈 的内存区域, 此区域的作用是: 每个方法在执行时都会创建一个栈帧, 用于存储局部变量表, 操作数栈 下面是具体的代码: ? 当编译运行上述的代码后, 会输出如下异常信息: ? 方法区内存溢出 ? 运行时常量池溢出 在 Java 1.6 以及之前的 HotSpot JVM 版本时, 有永久代的概念, 即 GC 的分代收集机制是扩展至方法区的.

    47830

    Java 常见内存溢出异常代码实现

    Java 堆 OutOfMemoryError Java 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的对象过多时 编译运行上述代码后, 会有如下输出: ? Java 栈 StackOverflowError 我们知道, JVM 的运行时数据区中有一个叫做 虚拟机栈 的内存区域, 此区域的作用是: 每个方法在执行时都会创建一个栈帧, 用于存储局部变量表, 操作数栈 下面是具体的代码: ? 当编译运行上述的代码后, 会输出如下异常信息: ? 方法区内存溢出 ? 运行时常量池溢出 在 Java 1.6 以及之前的 HotSpot JVM 版本时, 有永久代的概念, 即 GC 的分代收集机制是扩展至方法区的.

    53220

    java中的构造方法代码

    一、构造方法 1.1、java中的构造方法跟普通方法有很大的区别: 构造方法的方法名跟类名相同 构造方法没有返回值类型,连void也没有,也不能用return返回值 每次创建一个对象,都会调用构造方法, 如果没有写构造方法,系统会默认加上一个空参的构造,如果已经写了构造方法,无论有无参数,系统都不会再加上构造方法 构造方法主要用于给对象初始化值 1.2、构造方法的特点: 构造方法的方法名类名相同 构造方法没有返回值类型 Java中用"{}"包起来的就叫做代码块,根据位置声明的不同,可以分为以下几种: 局部代码块,局部位置,用于限定变量的生命周期 构造代码块,位于类中成员位置,用"{}"包起来,每次调用构造函数前,都会先执行一次构造代码块 ,可以把多个构造函数中的共同代码放一起,给对象进行初始化 静态代码块,在类中的成员位置,用{}括起来的代码,只不过它用static修饰了 作用一般是对类进行初始化 优先级:静态成员变量或静态代码块> main 方法> 非静态成员变量或非静态代码块 > 构造方法

    10610

    Java 常见内存溢出异常代码实现

    编译运行上述代码后, 会有如下输出: >>> java -Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError com.test.OutOfMemoryErrorTest 下面是具体的代码: /** * @author xiongyongshun * VM Args: java -Xss64k */ public class OutOfMemoryErrorTest 在方法区中, 有一部分内存是用于存储常量池, 因此如果代码中常量过多时, 就会耗尽常量池内存, 进而导致内存溢出.那么如何添加大量的常量到常量池呢? 我们通过 JDK1.6 编译并运行上面的代码, 会有如下输出: Exception in thread "main" java.lang.OutOfMemoryError: PermGen space (RuntimeConstantPoolOOMTest.java:16) 需要注意的是, 如果通过 JDK1.8 来编译运行上面代码的话, 会有如下警告, 并且不会产生任何的异常: >>> java

    30280

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 移动应用安全

      移动应用安全

      移动应用(APP)安全为用户提供移动应用全生命周期的一站式安全解决方案。涵盖移动应用加固、安全测评、安全组件等服务……

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券