apk 反编译 重打包 重签名 (SWPU-2019-CTF)
iyzyi • 2019 年 12 月 07 日
狗儿的安卓逆向初体验
前言
SWPU的比赛把狗儿整自闭喽~
(后来想了想其实是我对这个比赛的定位搞错啦~我最初以为就是swpu面向他们学校新手的比赛,没想到天河、LinE等等好多大佬也来了。)
MISC不想做,于是先拿RE试了试水,结果一道题没搞出来。四道RE,没有一道题是加壳混淆的,就是最基本的算法逆向,然而还是看不懂。
然后看了看Mobile,先看的Mobile2(此题截止到今晚依旧零解),思路感觉很清晰,但就是不对。然后现学了一下smali和回编译,虽然学会了新知识,但是对解题没有任何帮助。不过借助这些新学的知识把Mobile1做了出来。
下面就写一下mobile1的做题经过。
所以,这篇博文或许应该改名为:android动态调试初探。
参考:
反编译
apktool.jar d -s app1.apk
生成app1的文件夹。
apktool.jar d app1.apk -o app1_smali
生成app1_smali文件夹
不带有-s时,反编译生成多个smali文件,带有-s时,会将多个smali文件整合成一个classes.dex.
java代码
dex2jar classes.dex
将classes.dex转化成.jar文件,并用jd-gui查看。
输入的文本和调用native层的Encrypt()返回的string比较。
修改smali代码
参考:
经过和java代码的对比,我们确认比较字符串的代码在MainActivity$1.smali..class Lcom/example/ndktest2/MainActivity$1;