[BUUCTF]简单注册器
又是个apk, 直接上jadx
, 反编译MainActivity
,
直接找到关键算法
Ctrl+C
, Ctrl+V
复刻
1 |
|
又是个apk, 直接上jadx
, 反编译MainActivity
,
直接找到关键算法
Ctrl+C
, Ctrl+V
复刻
1 | #include <cstdio> |
是个apk
, 拿AndroidKiller
反编译,
找到一个Unicode
字符串
解码一看, 哈哈高兴的太早了
1 | string = "\u7b54\u6848\u9519\u4e86\u80bf\u4e48\u529e\u3002\u3002\u3002\ |
在MainActivity.smali
里面找到了几个数组,
很可能和flag有关
smali
格式阅读起来很不方便,
需要将它还原成Java
代码,
但是AndroidKiller
不支持这种功能,
所以改用jadx
.
jadx: Github
用jadx-gui
直接打开apk
, 源码就出来了,
到MainActivity
一看, 果然和flag有关
1 | package com.example.findit; |
好在Java
的语法和C/C++
类似,
可以大概看出来是个啥意思:
先对a
数组进行处理, 放到x
数组中,
对比用户的输入和x
数组是否相同,
若相同则对b
数组进行处理放到y
数组中并显示出来,
想必y
数组中的就是flag.
解密代码如下:
1 | #include <cstdio> |
无壳, 主函数大部分都是Windows
的API
,
关键是看这个函数
再跟进去可以找到另一个函数
还是没有啥有价值的信息, 但是找到了熟悉的函数, 在之前出现过, 见 刮开有奖
果然, 答案就在这里了,
所以flag就是flag{1999902069a45792d233ac}
这题也可以从字符串直接入手, 更快
还可以点19999次直接出flag