2017年1月19日星期四

ANDROID 逆向实例(五)- 360 QhCrackMe

分析一个从看雪上拿过来的 apk。

看名字像是某次数字出的题目?不过毕竟年代久远,比较简单。

baksmail 反编译,就两个需要注意的文件 MainActivity.smali 和 MainActivity$1.smali 其实就是一个 MainActivity 类了,先进入程序看下是什么样的 CrackMe。


大概就长这样,可以看出来程序因为是有一个隐藏的方法,把用户输入的三个内容进行比较是否正确,看看 smali 文件先。没什么太多东西,不贴代码了,主要就是注册了一个 Native 函数 verify,然后把 verify 和 OnClick 绑定。

只有 libqihoo.so 所以也不用去区分是哪个 so 文件里的方法,IDA 看一下。


静态看不了,动态调试一下看看。


动态调试没问题了,不用关系代码是怎么还原的,反正,还原了就好,F5 。


看到这个 860 就知道了,对应的是 RegisterNatives 的偏移 0x35C,所以此时这个 &unk_78068004 肯定保存的就是动态注册 verify 时需要的指针。(为什么可以看之前的逆向笔记)跟进看到。


三个地址,分别指向的是动态注册的:函数名、函数类型、函数代码,前面两个不看了,直接看第三个指针指向的 0x78061FF4。


这里 F5 的时候出现一个 sp 不平的问题,怎么解决这个问题呢,定位到指针不平的地址,然后通过 Alt + k 快捷键,将不平的地方配平就可以 F5 了。


最后的 verify 函数就是这样了,里面掉用了一些其他的函数,这些函数也没做特殊的处理,至此 verify 原型已经出来了,有兴趣的可以继续往下分析。

Related Posts:

  • ANDROID 逆向实例(七)- Ali 加固(2017.01)也算是第一次独立完成壳子的分析大概花了两周的时间,通过这个壳子学到了很多,感觉学习价值还不错 ~ 先 apktool 看一下加固前后的目录结构,对比图如下,看出来主要修改的地方有两个,lib 下的 libdemolish.so 和 libdemolishdata.so,另一处是 com.ali.f… Read More
  • ANDROID 逆向实例(八)- 乐固加固脱壳(2017.01)虽然乐固做了一些反调试的东西,不过感觉比 Ali 更好分析一点,很多情况并不是反调试越厉害加固就越好。感觉 Ali 在加固方面做的比乐固有意思,Ali 利用 SP 来储存返回地址和参数所以整个流程很混乱,基本看上去就是在各种 JUMP,而乐固仍然是常规规的函数调用和返回方式,流程清晰很多。 另外想… Read More
  • ANDROID 逆向实例(六)- 梆梆加固(2015.08)还是从网上找到的样本,拿来做加固分析的例子。 可以看到,加固之后多了两个 .so 文件、一个 com.edog 的 smali 文件夹,My.XuanAo.LiuYao 这个目录是本身 apk 的代码结构,所以猜测加固全是在 com.edog 和 .so 文件里做的。 看下 Andro… Read More
  • ANDROID 逆向实例(四)- com.qtfreet.crackme001现在很多 apk 在开发中为了保证代码不被轻易逆向出来会对关键函数采用 ndk 的方式用 c 语言和 java 代码进行交互,所以学会分析 .so 文件(加载流程、方式等)对安卓逆向来说是比较重要的。 这里借助一个 CrackMe.apk 实例来帮忙分析。反编译 apk 文件得到 smali 代码… Read More
  • ANDROID 逆向实例(五)- 360 QhCrackMe分析一个从看雪上拿过来的 apk。 看名字像是某次数字出的题目?不过毕竟年代久远,比较简单。 baksmail 反编译,就两个需要注意的文件 MainActivity.smali 和 MainActivity$1.smali 其实就是一个 MainActivity 类了,先进入程序看下是什… Read More