反编译

MyEclipse10.7安装jad反编译插件

吃可爱长大的小学妹 提交于 2021-02-10 15:31:24
1.下载反编译工具jad(下面提供下载) 将下载下来的jad star 158.zip解压缩,将jad.exe文件放入jdk安装目录下 如:C:\Program Files\Java\jdk1.6.0_20\bin 下载eclipse反编译插件net.sf.jadclipse_3.3.0.jar(下面提供下载) 将 import java.io.File; import java.util.ArrayList; import java.util.List; /** * MyEclipse10.0 插件配置代码生成器 * * */ public class CreatePluginsConfig { public CreatePluginsConfig() { } public void print(String path) { List<String> list = getFileList(path); if (list == null) { return; } int length = list.size(); for (int i = 0; i < length; i++) { String result = ""; String thePath = getFormatPath(getString(list.get(i))); File file = new File

Android安全攻防战,反编译与混淆技术完全解析(上)

核能气质少年 提交于 2021-01-27 00:54:45
之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了。另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术。那么最近的两篇文章我们就围绕反编译和混淆这两个主题来进行一次完全解析。 反编译 我们都知道,Android程序打完包之后得到的是一个APK文件,这个文件是可以直接安装到任何Android手机上的,我们反编译其实也就是对这个APK文件进行反编译。Android的反编译主要又分为两个部分,一个是对代码的反编译,一个是对资源的反编译,我们马上来逐个学习一下。 在开始学习之前,首先我们需要准备一个APK文件,为了尊重所有开发者,我就不拿任何一个市面上的软件来演示了,而是自己写一个Demo用来测试。 这里我希望代码越简单越好,因此我们建立一个新项目,在Activity里加入一个按钮,当点击按钮时弹出一个Toast,就这么简单,代码如下所示: public class MainActivity extends AppCompatActivity { @Override protected void onCreate (Bundle

写给软件开发者---Binnary Security.

て烟熏妆下的殇ゞ 提交于 2020-04-09 11:12:30
本文目标: 大致了解 Java byte code 以及 Assembly. 简单概述如何反编译 Java Class 二进制文件的反编译 回答 “ 难道真的不能保护程序源码吗? ” Java Byte Code: 使用命令 javap -c <ClassName> 来把 Java 源代码编译为 Java Byte Code 要编译 Java 源代码必须保证所在机器上有 JVM 环境 不同的操作系统必须安装相应的 JVM 环境 Java Byte Code的简单语法: iconst_0 : push 0 onto the stack istore_1: pop the top of the stack as variable 1 goto: jump to line iload_1: push variable 1 onto the stack bipush, ldc: push value onto stack if_icmplt: if 1 St item on stack > 2 nd jump to line Ifeq: if 1 st item on stack > 2 nd jump to line 更多语法请自己 Google. 反编译: 反编译通常执行编译器的相反动作 —---- 即把含有相对抽象的底层代码(通常指那些被设计用来给计算机读取的语言)转化为高级语言代码

如何防止Android应用代码被窃

a 夏天 提交于 2019-12-07 19:58:00
上一篇我们讲了 apk 防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客 http://my.oschina.net/u/2323218/blog/393372 。接下来我们将介绍另一种防止 apk 反编译的技术 - 运行时修改字节码。这种方法是在工作中在实现 app wrapping 时,看到国外的一篇关于 android 安全的介绍实现的并且独创。下面我们来介绍一下这种方法。 我们知道 apk 生成后所有的 java 生成的 class 文件都被 dx 命令整合成了一个 classes.dex 文件,当 apk 运行时 dalvik 虚拟机加载 classes.dex 文件并且用 dexopt 命令进行进一步的优化成 odex 文件。我们的方法就是在这个过程中修改 dalvik 指令来达到我们的目的。 一、dex文件格式 dex 的文件格式通常有 7 个主要部分和数据區组成,格式如下: header 部分记录了主要的信息其他的部分只是索引,索引的内容存在 data 区域 。 Header 部分结构如下: dex 与 class 文件相比的一个优势,就是将所有的常量字符串集统一管理起来了,这样就可以减少冗余,最终的 dex 文件 size 也能变小一些。详细的 dex 文件介绍就不说了,有兴趣的可以查看 android 源码 dalvik/docs 目录下的

android apk 防止反编译技术第一篇-加壳技术

不打扰是莪最后的温柔 提交于 2019-12-04 22:21:44
做 android framework 方面的工作将近三年的时间了 , 现在公司让做一下 android apk 安全方面的研究,于是最近就在网上找大量的资料来学习。现在将最近学习成果做一下整理总结。学习的这些成果我会做成一个系列慢慢写出来与大家分享,共同进步。这篇主要讲 apk 的加壳技术,废话不多说了直接进入正题。 一、加壳技术原理 所谓 apk 的加壳技术和 pc exe 的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译,在程序运行的时候优先取得程序的控制权做一些我们自己想做的工作。(哈哈,跟病毒的原理差不多) PC exe 的加壳原理如下: 二、 android apk 加壳实现 要想实现加壳需要解决的技术点如下: ( 1 )怎么第一时间执行我们的加壳程序 ? 首先根据上面的原理我们在 apk 中要想优先取得程序的控制权作为 android apk 的开发人员都知道 Application 会被系统第一时间调用而我们的程序也会放在这里执行。 ( 2 )怎么将我们的加壳程序和原有的 android apk 文件合并到一起 ? 我们知道 android apk 最终会打包生成 dex 文件,我们可以将我们的程序生成 dex 文件后,将我们要进行加壳的 apk 和我们 dex 文件合并成一个文件,然后修改 dex 文件头中的

android apk 自我保护技术-加密apk

馋奶兔 提交于 2019-12-02 16:41:12
经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)和运行时修改字节码(http://my.oschina.net/u/2323218/blog/396203),如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍。接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密。 一、伪加密技术原理 我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩。在日常生活或者工作中,我们通常为了保护我们自己的文件在进行压缩式都会进行加密处理。这样的方法对于android apk同样适用。原理很简单,在zip的文件格式中有一个位用来标示该zip压缩文件中的文件是否被加密,我们只要找到该标志位将其置1就可以实现我们的目的。而android的包安装服务(PackageManagerService)在进行apk安装时并不关心这个加密位(暂时我们就这么叫它吧)可以进行正常的安装并且也不会影响apk的运行。 二、zip文件格式 zip的文件格式通常有三个部分组成:压缩文件源数据、压缩目录源数据、目录结束标识

android apk 防止反编译技术第三篇-加密

☆樱花仙子☆ 提交于 2019-12-02 16:40:53
经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍 android apk 防止反编译技术的另一种方法。前两篇我们讲了加壳技术( http://my.oschina.net/u/2323218/blog/393372 )和运行时修改字节码( http://my.oschina.net/u/2323218/blog/396203 ),如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍。接下来我们将介绍另一种简单适用的防止 apk 反编译的技术 - 对apk进行伪加密。 一、 伪加密技术原理 我们知道 android apk 本质上是 zip 格式的压缩包,我们将 android 应用程序的后缀 .apk 改为 .zip 就可以用解压软件轻松的将 android 应用程序解压缩。在日常生活或者工作中,我们通常为了保护我们自己的文件在进行压缩式都会进行加密处理。这样的方法对于 android apk 同样适用。原理很简单,在 zip 的文件格式中有一个位用来标示该 zip 压缩文件中的文件是否被加密,我们只要找到该标志位将其置 1 就可以实现我们的目的。而 android 的包安装服务( PackageManagerService )在进行 apk 安装时并不关心这个加密位(暂时我们就这么叫它吧)可以进行正常的安装并且也不会影响 apk 的运行。 二、 zip 文件格式

Android APK反编译详解

大城市里の小女人 提交于 2019-11-30 03:29:56
一、反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址: dex2jar: http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI: http://laichao.googlecode.com/files/jdgui.zip 具体步骤: 首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的; 解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录 运行 dex2jar.bat classes.dex 生成 classes.dex.dex2jar.jar 生成jar文件的截图如下: 运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了 HelloAndroid源码(编译前的apk源码对照)如下: 二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件 如果是只是汉化软件,这将特别有用。 首先还是下载工具,这次用到的是apktool 下载地址:

Eclipse4.5Mars安装JAD反编译插件

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 01:51:45
声明:在您阅读本文之前,希望您能了解的事。本文中的JAD站点URL已经失效,而我也选择了替代插件Eclipse Class Decomplier2.9.0(Eclipse Version 4.6-Neon-64bit). 下面是新的插件安装过程:Help--Eclipse Marketplace,search jad,选择Eclipse Class Decomplier2.9.0,点击Install。 接受许可后安装并重启。配置请参考下文第六步,祝生活愉快! 分割线,请原谅我没找到分割线 第一步:打开eclipse帮助中的软件安装 第二步:添加站点: http://feeling.sourceforge.net/update,如下图: 第三步:选择Eclipse Class Decompiler,下一步,下一步 第四步:接受许可,安装!图略! 第五步:重启eclipse! 第六步:配置Jad, 下图为Eclipse Class Decompiler的首选项页面,可以选择缺省的反编译器工具,并进行反编译器的基本设置。缺省的反编译工具为JD-Core,JD-Core更为先进一些,支持泛型、Enum、注解等JDK1.5以后才有的新语法。 首选项配置选项: 1.重用缓存代码:只会反编译一次,以后每次打开该类文件,都显示的是缓存的反编译代码。 2.忽略已存在的源代码:若未选中

在Eclipse中反编译Class文件完全详解

本小妞迷上赌 提交于 2019-11-27 17:48:22
Java 是开源的,是免费的,我们强烈鄙视所有不公开源代码的东东。比如,对 class 文件进行加密混淆的类文件,一般情况下,我们是看不到其源代码的。本文将对此进行详细阐述,说明如何随心所欲的反编译看源码,体验一下其中的乐趣。(本文最后面有相关资源下载) 目前在 Java 开发工具中, Eclipse 可谓是占据着绝对的优势,在平常使用中,大家都会有意无意的查看一下所调用 JAR 包的源代码,这时如果没有引入源文件的话,将会看不到结果。大象以 dom4j-1.6.1.jar 为例来进行说明,打开 demo 项目(请在 dom4j 分类中查找),找到 com.demo.database.DataBaseConnect 类,按住 Ctrl 键,再用鼠标点击 Element , 如图: dom4j 是开源的,可以在 sourceforge.net 下载到它的完整版,里面当然包含源代码。大象想说的是,在做开发的时候,需要用到大量的 JAR 包,你不可能每个都去 down 一个源码下来,而且我们用不到这么多的源码,只是在需要的时候,看下其中的代码,解决一时的问题。 大象通过查看网上其他人的研究成果再结合自己的分析,总结了一些经验,现在整合起来和大家分享一下。 1、安装 jadclipse 插件 选择插件时,本人曾经使用过网上评论非常好的 Jode 开发的 Eclipse 插件