一个简单的apk破解

本文介绍了一位作者如何在不了解Java和Android编程的情况下,成功破解了一款名为LockNowFree的锁屏应用,并分享了详细的步骤及所用工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
在ItFunz上的一个软软推荐贴子里看到一个一键锁屏软件--lock now free. 感觉还不错,就是用了一段后, 每次用软件锁屏后, 再打开都显示软件设置界面. 在网上找原因, 有人说是因为免费版的原因, 但又找不到已付费版. 因此就想试着把它破了.

不懂java,也从未接触过android程序. 好在C风格的语言差别也不是很大,又在网上搜一些adroid程序开发的文章,对android程序的结构有了个大概的了解. 没想到最后竟然在连Hello World都不会写的情况下破解成功......

破解后的apk: https://cid-9fb2801de5575b38.office.live.com/self.aspx/Adroid/LockNowFree.apk 有需要的直接拿去用吧

-----------------------------------------------------------
欲善其事,先利其器, 先说一下要用到的的软件:
1. dex2jar: http://code.google.com/p/dex2jar/
2. jd-gui: http://java.decompiler.free.fr/?q=jdgui
3. apktool:http://code.google.com/p/android-apktool/
4.apk签名工具:  .net版       java版  (原工具从itfunz论坛下载,里面带一些和apk签名无关的东西,体积太大)

/**********************************************/
apk文件其实是个压缩吧,用7zip之类的解压软件可以直接打开.
image
如图所示,解压后,有两个文件夹,三个文件.
META-INF文件夹里保存的是程序的签.android的程序用签名来保证程序的完整性, 我们需要在修改后用签名工具重新签名.
res文件夹里是资源文件, 图片啊什么都在这里, 汉化基本上也在是这里修改.
classes.dex, 这个是今天的主角, 我们要做的就是反编译这个文件,修改后,再重新编译.

///////////////////////////////////////////////////////////////////////////
总体思路:
首先,我们要用dex2jar把classes.dex反编译成jar文件, 然后用jd-gui打开反编译成出的jar文件, 找出需要修改的地方. 最后用apktool反编译整个apk包, 修改刚才在jd-gui中找出的修改点, 再用apktool重新编译, 编译后用签名工具签名,就可以安装了.

开始破解:
1. 先把apk解压, 把classes.dex复制到dex2jar的文件夹中(我懒得到路径才这么干 的^^)
2. 打开命令行, 进行dex2jar文件夹. 输入下面的命令把反编译生成jar文件:
dex2jar.bat classes.dex
完成后, 文件夹中会多出一个classes.dex.dex2jar.jar的文件.
(想省事的话,也可以把classes.dex拖动到dex2jar.bat上,效果是一样的,我就是这么干的,就是如果出错了,看不到错误)

3. 用jd-gui打开反编译出来的classes.dex.dex2jar.jar. (全是图形界面,不多说了)
image
   通过分析,可以发现,图中的代码就是用来判断是否显示设置界面的. (adroid程序里,Activity就类似窗口的概念)
   程序比较installDate和当前时间,如果当前时间大于installDate,就显示窗口. 如果你去看installDate的初始化代码,会发现它的值是文件修改时间加上604800000, 这个604800000正好是一星期的毫秒数, 这也解释了为什么直到一星期后才开始显示设置界面.

程序分析完了,下面开始修改.

4. 把apk文件(lock.apk)复制到apktool所在文件夹中. (....同样是懒得打路径)
5. 打开命令行, 进行apktool文件夹. 输入下面的命令把反编译apk文件:
   apktool.bat d lock.apk lock
   这条命令的意思是把lock.apk反编译并输出到Lock文件中. 完成后, 会多出一个lock文件夹.

6.打开新生成的lock文件夹. 会看到里面有个smali文件夹, 里面放的就是反编译出为的中间代码.
   用文本编辑器打开smali\jp\hamachi\android\locknow\app\LNDummyActivity.smali文件, 里面全是类似汇编的中间代码(Dalvik opcodes).
   之前已经分析过代码, 所以直奔我们要修改的地方:
image
  图中的代码和我们在jd-gui中看到的代码相对应, 只要把if-gez v3, :cond_0 改成 goto :cond_0就行了, 不论什么情况,都转到cond_0. 当然也可以把前面的取时间啊,决断啊, 还有后面显示窗口的代码都删掉, 我就是这么干的.
  (PS: 仔细读一下这些代码,你会发现程序流程和jd-gui中看到并非完全相同)

7. 修改已经完成了,接着,输入下面的命令,重新编译生成apk文件.:
    apktool.bat b -f lock  lockNew.apk
    这个命令的意思是把Lock文件夹的内容build成lockNew.apk, -f是强制重新编译, 不加这个参数也可以. 命令完成后会在apktool的文件夹中生成lockNew.apk

8. 最后只要把lockNew.apk用签名工具重新签名就可以安装了. 这个也是完全的UI操作,非常简单,就不说了

由于本人对android很不熟悉,不足之处请多指教, 如果有不明白也可以留言,大家一起探讨.

转载请注明原文地址:http://nightshadows.ycool.com/post.4364347.html

ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值