http://ift.tt/2DENrGZ 题目基本信息 大小: 1685975 bytes 修改时间: 2018年1月25日, 12:03:47 MD5: EBA6C33907783F8D24313AF3C1329598 SHA1: DD6821B9F91282325C87FD51220896168AAA3935 CRC32: A1CF79DC cake.apk解压密码: nvai 安装运行画面 很明显这是一道解密题,二话不说开始分析吧 分析 拖到安卓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...