APK破解
apk 破解之dexdump反编译Android程序

apk破解之dexdump反编译Android程序-OMS操作系统平台专区-(转载)2010-07-0717:28反编译Android程序目前没有什么好的方法,但是在Android Emulator中可以找到一个名为dexdump的程序,文件中的dex执行情况,ophone一些底层的xx。
相关内容都放到了dex文件中,为什么要反编译apk文件呢?就目前来看Android开放度还很低,很多东西只对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Ja容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调用、涉及到的方法都在里面体现到时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。
模拟器自带了一个dexdump,有兴趣的关APK文件的汉化,我们将在下一次做详细的分析,因为这里主要是修改的不是dex而是资源文件,使用类似齐的方式逐个替换即可,最终再签名下即可使用,这样的行为可以算作是非法修改,不过目前这样的方法在国内AndroidMarket上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取=================================================觉着这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享;1.首先找到Android软件安装包中的class.dex源文件;2.把class.dex拷贝到dex2jar.bat所在目录。
运行dex2jar.bat classes.dex,生成classes.dex.dex2jar.jar3.运行JD-GUI工具(它是绿色无须安装的)打开上面的jar文件,即可看到源代码俺也是今天才试验了下效果,那是相当的凑效,所以兄弟姐妹们觉着好就给句鼓励的话把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上=================================================关于apk文件反编译的方法(dex2jar和JD-GUI)1、下载dex2jar最新版本0.0.7,下载地址http:2、下载class反编译工具,我用的是jad,大家可以根据自己情况选择。
反编译APK文件的三种方法(转)

反编译APK⽂件的三种⽅法(转)因为学习Android编程的需要,有时我们需要对⽹络上发布的应⽤项⽬进⾏学习,可是Android项⽬⼀般是通过APK⽂件进⾏发布的,我们看不到源代码,嘿嘿,办法总会有的,⽽且不⽌⼀个...ps:对于软件开发⼈员来说,保护代码安全也是⽐较重要的因素之⼀,不过⽬前来说Google Android平台选择了Java Dalvik VM的⽅式使其程序很容易破解和被修改,⾸先APK⽂件其实就是⼀个MIME为ZIP的压缩包,我们修改ZIP后缀名⽅式可以看到内部的⽂件结构,类似Sun JavaMe的Jar压缩格式⼀样,不过⽐较去别的是Android上的⼆进制代码被编译成为Dex的字节码,所有的Java⽂件最终会编译进该⽂件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调⽤、涉及到的⽅法都在⾥⾯体现到,⾄于逻辑的执⾏可以通过实时调试的⽅法来查看,当然这需要借助⼀些我们⾃⼰编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private⽂件夹的安全,但是最终我们使⽤修改定值的系统仍然可以获取到需要的⽂件。
⼀、dexdump⽅法dexdump是emulator⾃带提供的查看dex⽂件的⼯具,可使⽤类似这样的命令将dex⽂件dump到txt⽂件中:D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt 得到的⽂件内容,描述了类的信息,但实在是不好读啊~~~~⼆、dex2jar + XJad ⽅法该⽅法是使⽤dex2jar.jar包,将classes.dex⽂件解包成jar,在通过XJad(或者其他class反编译⼯具)进⾏java反编译。
如:1、dex2jar.bat d:\play\classes.dex默认的输出路径同classes.dex,⽣成的⽂件名为classes.dex.dex2jar.jar2、使⽤XJad反编译该jar包之后的使⽤⽅法,⼤家都懂的:)该⽅法的好处在于,通过XJad反编译后,⼤家可直接开到java源⽂件,缺点在于只能反编译出开发时的java⽂件,⽽开发时使⽤的lib包不能反编译出来。
android黑科技系列——Apk的加固(加壳)原理解析和实现

android⿊科技系列——Apk的加固(加壳)原理解析和实现⼀、前⾔今天⼜到周末了,憋了好久⼜要出博客了,今天来介绍⼀下Android中的如何对Apk进⾏加固的原理。
现阶段。
我们知道Android中的反编译⼯作越来越让⼈操作熟练,我们⾟苦的开发出⼀个apk,结果被⼈反编译了,那⼼情真⼼不舒服。
虽然我们混淆,做到native层,但是这都是治标不治本。
反编译的技术在更新,那么保护Apk的技术就不能停⽌。
现在⽹上有很多Apk加固的第三⽅平台,最有名的应当属于:爱加密和梆梆加固了。
其实加固有些⼈认为很⾼深的技术,其实不然,说的简单点就是对源Apk进⾏加密,然后在套上⼀层壳即可,当然这⾥还有⼀些细节需要处理,这就是本⽂需要介绍的内容了。
⼆、原理解析下⾯就来看⼀下Android中加壳的原理:我们在加固的过程中需要三个对象:1、需要加密的Apk(源Apk)2、壳程序Apk(负责解密Apk⼯作)3、加密⼯具(将源Apk进⾏加密和壳Dex合并成新的Dex)主要步骤:我们拿到需要加密的Apk和⾃⼰的壳程序Apk,然后⽤加密算法对源Apk进⾏加密在将壳Apk进⾏合并得到新的Dex⽂件,最后替换壳程序中的dex⽂件即可,得到新的Apk,那么这个新的Apk我们也叫作脱壳程序Apk.他已经不是⼀个完整意义上的Apk程序了,他的主要⼯作是:负责解密源Apk.然后加载Apk,让其正常运⾏起来。
在这个过程中我们可能需要了解的⼀个知识是:如何将源Apk和壳Apk进⾏合并成新的Dex这⾥就需要了解Dex⽂件的格式了。
下⾯就来简单介绍⼀下Dex⽂件的格式具体Dex⽂件格式的详细介绍可以查看这个⽂件:/detail/jiangwei0910410003/9102599主要来看⼀下Dex⽂件的头部信息,其实Dex⽂件和Class⽂件的格式分析原理都是⼀样的,他们都是有固定的格式,我们知道现在反编译的⼀些⼯具:1、jd-gui:可以查看jar中的类,其实他就是解析class⽂件,只要了解class⽂件的格式就可以2、dex2jar:将dex⽂件转化成jar,原理也是⼀样的,只要知道Dex⽂件的格式,能够解析出dex⽂件中的类信息就可以了当然我们在分析这个⽂件的时候,最重要的还是头部信息,应该他是⼀个⽂件的开始部分,也是索引部分,内部信息很重要。
apk签名与破解

Android APK 签名比对发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的。
签名机制在Android应用和框架中有着十分重要的作用。
例如,Android系统禁止更新安装签名不一致的APK;如果应用需要使用system权限,必须保证APK签名与Framework签名一致,等等。
在《APK Crack》一文中,我们了解到,要破解一个APK,必然需要重新对APK进行签名。
而这个签名,一般情况无法再与APK原先的签名保持一致。
(除非APK原作者的私钥泄漏,那已经是另一个层次的软件安全问题了。
)简单地说,签名机制标明了APK的发行机构。
因此,站在软件安全的角度,我们就可以通过比对APK的签名情况,判断此APK是否由“官方”发行,而不是被破解篡改过重新签名打包的“盗版软件”。
Android签名机制为了说明APK签名比对对软件安全的有效性,我们有必要了解一下Android APK的签名机制。
为了更易于大家理解,我们从Auto-S ign工具的一条批处理命令说起。
在《APK Crack》一文中,我们了解到,要签名一个没有签名过的APK,可以使用一个叫作Auto-sign的工具。
Auto-sign工具实际运行的是一个叫做Sign.bat的批处理命令。
用文本编辑器打开这个批处理文件,我们可以发现,实现签名功能的命令主要是这一行命令:java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.a pk这条命令的意义是:通过signapk.jar这个可执行jar包,以“testkey.x509.pem”这个公钥文件和“testkey.pk8”这个私钥文件对“update.apk”进行签名,签名后的文件保存为“update_signed.apk”。
对于此处所使用的私钥和公钥的生成方式,这里就不做进一步介绍了。
apktool使用教程转发

apktool使用教程如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool。
APKTool是GOOGLE 提供的APK编译工具,那么APKTool怎么用呢?一.APKTOOL使用环境配置1.安装JAVA并设置环境变量。
下载安装都很简单,关键是安装完后还需要亲自设置环境变量以方便其他程序能够条用JAVA。
以WIN7为例,在桌面上右键点击计算机——>属性——>高级系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26二.APKTool的安装1.其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos 命令.2.可能有些人下载的APKTOOL里有个安装的bat文件,并且有另外两个方便使用的bat文件。
三.APKTool的使用1.decode该命令用于进行反编译apk文件,一般用法为apktool d <file.apk><dir><file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令apktool d –f <file.apk><dir>这样就会强行覆盖已经存在的文件2.build该命令用于编译修改好的文件,一般用法为apktool b <dir>这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
IDA破解apk的初次尝试

IDA破解apk的初次尝试1、背景介绍做APP开发一年多的时候,我突然对破解有了浓厚的兴趣,看了些资料,自己也动手写了写,老早之前有这样一篇文章,一直没空拿出来分享一下。
最近又重新整理了一下,感觉写得还是比较详细的,拿出来和大家分享探讨一下。
2、工具和环境工具:IDA Pro6.1,C32arm,apktool环境:win7,jdk1.6文件:crackme02.apk 上面的工具和文件大家自己准备一下,最后的crackme02.apk这个文件我会上传一份到CSDN让大家下载,好与我的文件保持一致。
实际上本文也是《Android软件安全与逆向分析》一书中的总结,大家也可以找这本书看看。
3、加载apk到IDA 首先使用zip解压缩文件取出crackme02.apk文件中的classes.dex文件,然后打开IDA Pro编译器,将程序拖入到IDA Pro编译器中,会有一个弹窗“Load a new file0”对话框,直接点击OK按钮。
(注意选择Android文件)这时,程序会进入反汇编的界面,稍等一下,IDA Pro分析完classes.dex后会出现如下图所示的情形:4、定位资源选项按照破解思路,我们找到资源文件中的string.xml文件,可以看到对应的字符串为unsuccessed。
然后我们使用apktool 反编译crackme02.apk文件,从smali文件的R文件中找到R$string.smali文件中的unsuccessed所对应的id值,如下图所示,我们得到的结果是:0x7f05000c 当找到字符串对应的id值之后,我们回到IDA Pro界面上来,在IDA的主窗口按下Alt T快捷键,会弹出字符串搜索的窗口,我们在该窗口中输入刚才找到的id值0x7f05000c,如图所示:然后会看到鼠标定位到了0x7f05000c所对应的地方。
这时候,我们向上查找最近的判断语句,很快会定位到CODE:0002CDD2行的if-nez。
破解apk教程

破解apk教程破解APK教程(500字)APK是Android平台上常见的应用程序格式,而破解APK则是指通过修改APK文件的代码或数据,使得原本有限的功能得到解锁或扩展。
破解APK的过程需要一定的编程技术和知识,下面将介绍一个简单的破解APK的教程。
首先,我们需要一个APK文件,可以通过从网上下载一款需要破解的应用程序得到。
然后,我们需要一个反编译工具,比如常用的apktool。
将APK文件拖动到apktool的执行文件上,即可对其进行反编译。
接下来,我们得到的是一个包含源代码和资源文件的文件夹。
我们可以使用任何文本编辑器来修改源代码,但是通常使用Android Studio这样的IDE会更便捷。
打开Android Studio后,点击“Open an Existing Project”并选择反编译得到的文件夹。
稍等片刻,我们就可以在Android Studio中查看到整个项目的结构。
很多APK破解的重点在于修改源代码,如跳过登录验证、解锁高级功能等。
我们需要仔细查找代码中的关键逻辑,常见的位置有MainActivity或者LoginActivity等入口类。
找到我们需要修改的功能代码后,我们可以根据实际需求进行修改。
在修改代码过程中,我们需要注意保留原有的代码逻辑,避免引发其它错误。
此外,可以通过注释掉某些代码来暂时关闭某些功能,以方便我们测试修改的效果。
修改完代码后,记得保存文件。
除了修改代码,我们有时还需要修改资源文件,如图片、布局等。
可以使用图像处理软件来修改需要的图片,然后替换对应的文件即可。
布局文件的修改可以通过简单的XML编辑器来实现。
最后,我们需要重新打包APK并签名,使我们的修改生效。
在Android Studio中,点击菜单栏的“Build”选项,选择“Build Bundle(s)/APK(s)”,然后选择“Build APK”。
稍等片刻,我们将得到一个新的APK文件。
新的APK文件完成了我们的破解操作,但需要注意的是,在实际使用中破解APK可能涉及到违法行为,且可能会损害原应用程序的开发者的合法权益,这是需要谨慎考虑的。
apk加壳原理

apk加壳原理
APK加壳,是指在Android应用程序中添加保护措施,使其难以被破解或篡改的一种技术手段。
加壳能够隐藏二进制代码,让应用程序更难以分析和修改。
加壳的原理主要是通过加密和解密技术,将原始的APK文件进行混淆和加密处理,将保护信息和指令代码隐蔽在APK文件之中,在运行时通过解密和反编译技术来还原APK文件的原本内容,让应用程序在保证安全性的情况下能够正常运行。
APK加壳的核心技术包括常规加壳、虚拟机加壳和代码加密。
常规加壳主要是通过在APK文件中添加一些伪代码,使破解者难以对软件代码进行分析和逆向工程。
虚拟机加壳则是通过在代码中添加一些虚拟机指令,例如改变函数调用顺序和跳转地址的方式,使其无法在标准的Java环境下运行;同时,在运行时动态加载保护模块来保证软件的完整性。
代码加密则是利用加密算法对代码进行加密,使得破解者无法直接获取到程序源代码。
APK加壳技术虽然可以增强应用程序的安全性,但也存在一定的风险和问题。
首先,加壳会增加应用程序的包大小,导致应用程序变得更为臃肿,影响用户使用体验。
其次,加壳也会增加应用程序的开发和维护成本,需要认真考虑是否值得使用。
最后,加壳技术并不是绝对安全的,仍然存在一定的风险被破解者攻击。
综上所述,APK加壳技术是一种有效的应用程序保护手段,可以有效降低应用程序被破解的风险。
但在实际运用中,需要针对具体情况进行综合考虑,权衡安全性、开发成本和用户体验,才能达到最好的效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单的总结几个关键步骤:
一、工具准备:apktool , dex2jar , jd-gui
二、使用dex2jar + jd-gui 得到apk的java源码
1.用解压工具从apk包中取出classes.dex 文件
用命令(dex2jar.bat classes.dex )得到一个jar文件
2.用jd-gui反编译工具将得到.jar文件反编译成.java文件
三、使用apktool得到apk的xml文件
1.用命令(apktool d xxx.apk xxx_xml )反编译xxx.apk包
2.从xxx_xml 文件夹得到xml文件
四、第二步得到的程序源代码和第三步得到的xml文件组合下,即可得到完整的apk源码。
五、汉化/去广告,加values-zh-rCN, values-zh-rTW, values-de, values-fr
1.在步骤三的文件夹里建文件夹: values-zh-rCN,values-zh-rTW
2.1复制values\strings.xml 到 values-zh-rCN 并翻译.
2.2 去广告见:/wangjianh ... /07/05/209856
3.html
3.重建APK,用命令(apktool b xxx ) ,输出到ABC/dist/out.apk
或命令( apktool b xxx out.apk )
六、签名
1.把未签名的apk 复制到sign.bat 目录下。
2.打开cmd, 进入到sign.bat 目录下, 输入命令:
sign out.apk out_signed.apk
out.apk 即为没签名的apk, out_signed.apk 为签名的
sign.bat 要改下:
@echo OFF
java -jar signapk.jar testkey.x509.pem testkey.pk8 %1 %2
--------------------------------- 以下是整理/摘选的---------------------------------
在官网下载apktools 工具
/p/android-apktool/
apktool1.4.3.tar.bz2 和apktool-install-windows-r04-brut1.tar.bz2
解压分别得到apktool.jar 和 apktool.bat , aapt.exe .
把这3个文件复制到系统文件夹下面, 一般是C:\Windows
jd-jui: http://java.decompiler.free.fr/?q=jdgui
dex2jar : /p/dex2jar/downloads/list
=================================================
部分内容摘自: /afirefly/archive/2011/10/12/2208461.html
一、工具准备:apktool , dex2jar , jd-gui
工具包也可以在这里下载。
/index.php?ac=file&oid=3166172581218989
1、dex2jar下载,jd-gui下载。
2、apktool,可以去Google的官方下载,apktool-1.0.0.tar.bz2(里面有apktool.jar)和apktool- install-win apktool.tar.bz2,把apktool.jar 放到C:\Windows下,解压apktool-install-windows.zip到任意文件夹(例如
二、使用dex2jar + jd-gui 得到apk的java源码
步骤如下:
1、用.rar打开apk文档,将classes.dex文件解压出来,然后使用工具反编译成.jar文件。
在cmd下进入dex2jar.bat所在路径,然后输入命令:
dex2jar.bat XXX
,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android classes.dex在D:\Android下,所以:你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes 是:classes.dex.dex2jar.jar)。
2.用jd-gui反编译工具将得到.jar文件反编译成.java文件
三、使用apktool得到apk的xml文件
1、Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入命令:
apktool d XXX.apk ABC
反编译XXX.apk到文件夹ABC
2、在解压后的文件夹中可以得到apk的xml配置文件
四、第二步得到的程序源代码和第三步得到的xml文件组合下,就成一个android工程,即可得到完整的apk源码
=================================================
部分内容摘自: /2487362/683234
APKTool的使用
1.decode
该命令用于进行反编译apk文件,一般用法为
apktool d <file.apk> <dir>
<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f <file.apk> <dir>
这样就会强行覆盖已经存在的文件
2.build
该命令用于编译修改好的文件,一般用法为
apktool b <dir>
这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
3.install-framework
该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文
========================== jadclipse Decompiler.zip
jad158e.linux.intel.zip
jad158g.win.zip ( jad.exe )
jadclipse.txt
jadclipse_3.1.0.jar
jadclipse_3.2.0.jar
net.sf.jadclipse_3.2.4.jar
net.sf.jadclipse_3.3.0.jar
android。