360安全挑战赛

网址http://challenge.onebox.so.com/,选无线攻防方向玩了下,把Android逆向相关的知识复习了下,也学了些arm 汇编相关知识,记录下过程。

总共三个题目,第一题如下

1.请重打包本qihootest1.apk,将java层实现的解密算法移至jni层重新实现,并在同一控件中展示解密后的内容;
2.本题2分,以非重打包的方式达到同等效果的不计分。
题目附件:qihootest1.apk(软件中已经用java层代码实现了解密软件包的文件并将加密的内容显示在启动界面上)

 apktool找到关键代码

iget-object v3, p0, Lcom/qihoo/test/first/MainActivity;->inputByte:[B

invoke-direct {p0, v3, v2}, Lcom/qihoo/test/first/MainActivity;->decrypt([BLjava/lang/String;)[B

move-result-object v3

 用的是des加密,下载Android的openssl,编译,写接口,然后替换上面代码,重编译即可。

第二题

1.请以重打包的形式将qihootest2.apk的程序包名改为 "com.qihoo.crack.StubApplication",使得在同一手机上面可以重复安装并正确运行;
2.请写个Application类,并在Manifest里面注册你的Application。同时要求使用该Application加载原包的Application;
3.本题3分,以非重打包的方式达到同等效果的不计分。

 先是要修改包名,直接修改Manifest和Activity的名字后程序无法运行,原因是MainActivity中调用了getContentResolver,需要修改ContentProvider所指向的数据库uri,Manifest中ContentProvider的包名和原包名不能一样,需修改,代码中调用到ContentProvider的地方也需修改。

第三题

1.请逆向qihootest3.apk,通过分析确定其序列号算法,并写出一个注册机;
2.输入注册码,并点击verify,成功则提示:you passed英文提示,否则将无任何提醒;
3.提示:注册号8位(字母或数字),本题满分为5分,通过爆破的方式达到效果的,将根据解题思路给予1-3分不等。

 第三题比较难,需要逆向so。第一版程序应该是把so文件做了处理,运行直接报错,后续补上这部分分析

猜你喜欢

转载自zuoshu.iteye.com/blog/2063926