KGB Messenger的writeup(1)
该题的 github地址为https://github.com/tlamb96/kgb_messenger,apk的下载地址为apk,
总结
- 清楚由apk到java源码的整个反编译过程:dex2jar+ jd-gui
- 绕过或者去除判断语句的思路
- 作者使用keytool和jarsigner进行的签名,和平时使用的方法不同
challenges
就是说你是国际秘密情报局的逆向工程师。今天早上,你的团队负责人指派你检查一个有问题的APP。据传有个特工斯特林·阿切尔曾与一些克格勃间谍接触并使用了这个APP。你的工作是对这个APP进行逆向,以核实谣言。
Alerts(Medium)
第一个问题就是说当我们打开这个APP时他会弹出一个很恶心的窗口(苏卡不列!!),让我们调查一下。
点击exit直接就退出了。
获得FLAG
过程如下:
-
此弹窗在主界面中所以先找到intent-filter中的主activity,首先用APKtool解包:
-
查看AndroidManifest.xml文件,发现com.tlamb96.kgbmessenger.MainActivity的属性如下:
-
所以将APK后缀改为zip后解压找到其中的dex文件用dex2jar反编译:
-
使用jd-gui打开查看java代码并找到上面的MainActivity,可以很清楚的看到里面的逻辑:
-
在onCreate中可以很明显的看到字符串的比较过程,若不满足条件就会弹窗,而且是会有两个弹窗。
-
第一个字符串若是Russia就可通过条件判断。
-
而第二个字符串与2131558400的字符串比较(这里是)
-
转化为16进制为
-
这里直接用Androidkiller简化后续过程(其他在terminal中查找字符串的方法可以看作者的workthrough video)
-
在Androidkiller中搜索此字符串,在pulic.xml中发现其name为User
-
在string.xml文件中找到name='User’的字符串得到具体的值
-
使用base64解码可以获得FLAG值
-
或者在linux中输入命令:
echo "RkxBR3s1N0VSTDFOR180UkNIM1J9Cg" | base64 -d
最终破解思路
-
在判断语句之前将s1和s2赋予这两个值就可以取消弹窗
-
使用android killer重新安装后打开app已经没有弹窗了至此alert破解完毕:
-
作者使用的方法是删除中间的所有无关语句从而达到效果。不过最后要注意末尾有一个goto:goto_0的语句要复制下来写到下面,是个return语句。