http://ift.tt/2DENrGZ
题目基本信息
大小: 1685975 bytes
修改时间: 2018年1月25日, 12:03:47
MD5: EBA6C33907783F8D24313AF3C1329598
SHA1: DD6821B9F91282325C87FD51220896168AAA3935
CRC32: A1CF79DC
安装运行画面
很明显这是一道解密题,二话不说开始分析吧
分析
拖到安卓killer中,注册文件没有发现有什么特别的
只知道主模块是.M
在主模块中的onCreate
函数中,发现实在
a
这个了类中有点击事件的监听器,那么进去看onClick
函数倒地做了什么
整个a函数是非常简单的,就一个点击相应函数,这里比较关注的是check
函数,实在主类中,进去查看一下
大体的逻辑是,先通过getkey,获取一个字符串保存到str1中,本来getkey返回的字符串是这样的
但是注意了,这里是方法的名称是getKey
但是str1= get□ey
非常的具有迷惑力
实例返回的字符串应该是这个
从图片上也可以看到,对数组进行了赋值,赋值完之后的数组为
int tem[16] = { 0, 3, 13, 19, 85, 5, 15, 78, 22, 7, 7, 68, 14, 5, 15, 42 };
紧接着就是对字符串进行校对,可以看到整个程序中没有返回值,如果发生了错误,都会调到自定义的错误localException1
进行处理
通过观察可以得知数组中每个元素和字符串的关系为
密码[i]^str[i%8]=整型数组[i]
因此写过控制台程序进行输出
计算解密
int tem[16] = { 0, 3, 13, 19, 85, 5, 15, 78, 22, 7, 7, 68, 14, 5, 15, 42 };
char temchar[] = "bobdylan";
for (int i = 0; i < 16; i++)
{
char c = tem[i] ^ temchar[(i % 8)];
printf("%c", c);
}
结果:
验证:
The post 安卓CTF cake.apk解题 appeared first on cole.
http://ift.tt/2nct9cU reverse engineering, android reverse, ctf January 26, 2018 at 03:38PM
评论
发表评论