许多人都观看了有关Hound个人助理的演示视频,该视频功能尽可能强大,甚至领先于Google Now和Siri等知名应用程序。猎犬也可以在美国的Google Play上免费下载,但是很遗憾,它正在开发中,需要在启动时发出邀请。立即我的双手急忙梳理以测试这个奇迹,并且厌倦了等待邮件邀请(大约一分钟后),我拿起了调试器...这是我不需要的,因为事实证明一切都比较简单,但是要按顺序进行。注意:我不是专业的Android开发人员,cracker等,因此请您尽一切努力来满足自己的好奇心和风险。在评论或私人消息中报告任何不正确之处。首先,您需要使用应用程序获取apk文件。您可以搜索Internet,但我们并不在寻找简单的方法。我从Google Play下载了最新版本,并从/data/app/com.hound.android.app-1文件夹中拉出了该应用程序(需要管理员权限,即root)。Andoid的任何应用程序都是apk文件,实际上是一个重命名的zip存档。如果使用任何存档器打开它,我们将看到以下图片:
更详细地考虑内容:- assets — , , ,
- lib — .so .
- META-INF — apk , SHA1 . , , . , , Android , .
- res — , xml , .
- AndroidManifest.xml — , , .
- classes.dex — , (), Java.
- resources.arsc — , , , res, .
幸运的是,除了第三方库以外,几乎整个应用程序都是用Java编写的,这意味着我们无需坐在调试器中就可以分解低级代码。现在,您需要解压缩classes.dex并尝试从中获取代码。为此,我们使用Apktool。在“安装”页面上,从命令行下载可执行jar文件以及用于使用它的包装器。将两个文件都复制到应用程序文件夹(或添加到环境变量)并运行以下命令就足够了:apktool -r decode _.apk
该-r选项是必要的,以免浪费时间拆包资源,我们不会编辑。现在,在与应用程序名称相同的文件夹中,我们已经看到的内容比存档器中的内容多一点。现在缺少classes.dex文件,而是显示smali文件夹,其中将类存储为文本文件。但是,嘿,Java在哪里?周围有一些扩展名为.smali的文件,这些文件远程存储类似于汇编程序的文件。这是将Java代码编译成的Dalvik操作码语言。有些应用程序可以尝试从这些文件中还原源代码,但是随后您需要更改此代码,并且从Java代码进行重建是一项艰巨的任务。因此,我们将了解smali代码,因为它很容易理解,并且其中的函数名称保持不变。我们将使用。查找负责访问应用程序的代码。知道了应用程序的名称和英语后,就可以清楚地看到该应用程序的主要类在smali / com / hound / android / appcommon文件夹中。问题是找到邀请被检查的地方。文件搜索将帮助我们,例如,在Windows中,您可以使用以下命令:findstr /s /i /m _ *.*
该代码可以包含“邀请”或“邀请”,因此我们将删除单词中的最后一个字母并寻找“邀请”。宾果游戏,在这里它是,isInvitationComplete()方法在smali / COM /猎犬/安卓/ appcommon /应用/ Config.smali文件:.method public isInvitationComplete()Z
.locals 2
.prologue
.line 578
const v0, 0x7f080174
const v1, 0x7f0b001f
invoke-direct {p0, v0, v1}, Lcom/hound/android/appcommon/app/Config;->getBoolean(II)Z
move-result v0
return v0
.end method
它从应用程序参数中请求一个布尔变量,并返回其值。但是,为什么我们需要这样的困难!让我们始终返回true。将“ move-result v0”替换为“ const / 4 v0,0x1”,然后保存文件。我们希望整个应用程序都依赖这个小功能,从现在开始,它将考虑我们是完整的beta测试人员。剩下的只是将应用程序组装回去。我们再次使用了出色的Apktool实用程序:apktool -r build _
不要忘记,在此之前我们需要解压缩整个文件夹,而不仅仅是smali。 apktool完成工作后,转到此文件夹,然后至dist,即已组装的apk文件所在的位置。而且它将无法正常工作,或者将无法安装。我们更改了应用程序的内容,这意味着签名现在无效。您必须重新签名应用程序。如果您是Android开发人员,则可以使用自己的签名和Android SDK。但是很多都没有,它们可以使用测试签名,并且可以从SDK实用程序signapk.jar中单独获取。还有一个sign.jar实用程序已经内置了签名。运行以下命令就足够了:java -jar sign.jar _.apk
接下来出现文件file_name.s.apk,它将是已签名的应用程序。我们将其上传到设备上,进行安装,并享受完整运行的应用程序!
您可以在Internet上找到某人最近发布的补丁程序版本。