Android逆向练习(二)smali
这次还是尝试,在吾爱上看到一个crack,也是非常简单,顺着接着练手。先看看长什么样:

拿到apk还是反编译,但第一步就失败了

但好歹能看到Manifest,知道入口是:example.test.com.myapplication.MainActivity

反编译失败后,直接解压文件,看得到两个dex文件,然后反编译一下dex。

翻来翻去,没看到入口和有用的信息,却找到个比较有意思的Paths类,里面似乎说明了在/data/data/./files/instant-run/目录下,有关于dex的文件。

打开应用,然后去目录下找找,呃,然后发现了一堆dex。

傻不拉几的挨个看了看,最终在slice-slice_9-classes.dex中找到了入口example.test.com.myapplication.MainActivity,剩下的看起来比较明显。。。

试了一下,然后。。。成功了

返回头来看,其实解压完后在目录下就有instant-run可以文件,直接解压来看看会更好,就不用绕圈圈了,还是太年轻,也感谢作者自己写了这么一个crackme供练习。
文件链接:
https://pan.baidu.com/s/1nvJYgU9 密码: hixf
——————————— 更新 ———————————————
这个是用AS的Instant Run直接打包成的APK,所以自己写的源码被打包到instant-run.zip里,解压instan-run.zip后,找到排序最大的一个slice_数字-classes.dex,用解压工具打开APK包,再将该dex文件拷贝到到此APK包内,此操作是在apk中注入文件。完了之后就可以用apktool反编译被注入的apk包,通过修改smali代码后,再用apktool回编译成apk包,这样就破解完成!【亲测可行,下面贴出部分代码】
.line 30
:cond_0
const-string/jumbo v1, "heziran"
invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_1
const-string/jumbo v1, "123"
invoke-virtual {p2, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1