2016 AliCTF Timer 50

2016年阿里CTF的第一道Mobile题,分值50

使用Jadx反编译样本,刚开始看着代码感觉有点怪怪的,看了一会,整理了逻辑,使用postDelayed()循环执行,间隔为1s

is2()函数用于判断素数

那么在去掉其余代码,总结就是:循环200000次,然后循环的时候进行素数判断,根据判断的结果进行不同的操作

Java还原

跑出结果

那么这个数字传入

这是一个native方法,小书包里掏出IDA

我去,一堆除和余,分析太费劲,反正没有其它的干扰了,写个APP自己调用这个so

有几点要注意

  • so直接放src/main/目录下的jniLibs,没有就自己创建,记得把armeabi带上

  • 调用类的路径需要和so里描述的一样,不然会找不到方法

  • int __fastcall Java_net_bluelotus_tomorrow_easyandroid_MainActivity_stringFromJNI2(int a1, int a2, signed int a3)

最后看一下完整的路径结构,这种调用so的方法不需要修改build.gradle,虽然不建议

跑起来,输出flag

毕竟才50分,还要分析so那简直太折腾,还是走捷径比较好,要是想锻炼so分析能力的同学可以去折腾一下

Last updated