0x01 题目介绍

本题目是一道信息安全大赛上的安卓逆向题目,主要考察选手,逆向分析能力,

反汇编能力,安卓程序结构分析能力,以及常见的安全加密编码算法得能力。题

目下载 http://download.csdn.net/detail/bjtbjt/9846682可能部分步骤过于啰嗦,大

佬略过。方便入门者学习。这个题目拿到手是个安卓apk程序。下载下来,我们先

不着急进行分析。先对其程序apk安装测试一下,看看有什么功能和提示,或者了

解一下要求我们做什么。在这里呢, 不建议大家直接在自己的安卓手机上安装,

最好使用模拟器。我这里呢,使用的是模拟器。模拟器地址网上也很多,我自己

安装的是蓝叠模拟器

http://www.bluestacks.cn/

安装很简单,就是下一步。如果出现这个说明安装成功了。

然后把我们的程序添加到这个模拟器,本地安装APK点击选择,安装好即可。

我们测试一下题目,随便输入1234,发现验证失败。那么此题目输入正确答案

密码串。

0x02 解题要点

到了这里,可以请出我们的安卓逆向神器,当然也有其它类似反编译器。

apktool,jd等之类的工具。JEB我这里是jeb 2.2.7破解版。载入我们的apk程

序进行分析。

通过关键按钮菜单,我们进行手动分析。和反编译部分函数和模块。由于刚才的

安卓程序有个按钮和编辑框。因此必须找到这个关键点位置。如下:onClick事件

就是负责处理验证密码过程。

前面绿色的数字ID就是按钮编辑框的标识,主要观察这个验证过程。对于用户的输入

这个程序先进行了。

此处把用户输入进行了字符串转化,然后去除空格。进行了encode函数编码。到底这是

个什么算法,还得跟踪Digest这个类对象的定义。先别着急分析编码函数,我们继续看

下面的代码关键点有个checkFlag函数进行了正确与否的验证,因为后面的输出判断刚好

有失败和成功之分。

这个函数呢,有声明,但是没有具体定义实体。为什么呢,因为这个是个内部JNI函数。

科普一下 Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他

语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的

Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互

操作。

http://www.cnblogs.com/hoys/archive/2010/10/28/1863612.html

http://www.2cto.com/kf/201308/232666.html

到这里基本上就算是验证结束。那么我们看到了其中经历两个验证函数。一个是encode,

一个是checkFlag函数。只要分析清楚这两个函数,那么我们就直接可以进行反推,逆向

分析算法获取结果。

先来看看第一个函数encode

看编码和基本操作,好像是个base64,这个为了高校简单起见,我们可以直接验证这段java代码类。

自己编辑测试个字符串即可。

找个bas64算法验证一下。

验证成功。

下面我们关注第二个函数算法

既然是个内部函数,那么我们看看它在哪,其实我们可以从内部导出这个库文件,存储为*.so

然后单独ida分析这个iscc.so库。

关键函数checkFlag定位

关键静态密文字符串

分析算法

这里面将用户输入的字符串重新复制了一份,然后操作
先将用户输入的字符串按照长度分割成两半
把前一半字符串中的字符按照从左到右的顺序取出来
ASCII码减去 5 , 然后与后半个字符串与之对应的位置进行交换。

最后是比较加密结果是否等于我们静态存储的密文。

=0HWYl1SE5UQWFfN?I+PEo.UcshU

完全一致返回真,否则返回假。

基于此算法,我们就可以手动编写逆向算法了。

'''
@author: 5t4rk
'''
def decrypt(cipher_string):try:plain = list(cipher_string)plain.reverse()print ''.join(plain)for i in range(0, (len(plain) / 2)):plain[i] = chr(ord(plain[i]) + 5)return''.join(i for i in plain)except Exception , e:print epassif __name__ == '__main__':print decrypt("=0HWYl1SE5UQWFfN?I+PEo.UcshU").decode("base64")passoutput:
UhscU.oEP+I?NfFWQU5ES1lYWH0=
flag{ISCCJAVANDKYXX}

0x03 学习总结

本次题目难度不是很大,主要是注意两个算法的分析。

一个base64一个逆向置换编码

必须找到关键checkFlag函数。

参考点:

http://www.2cto.com/kf/201308/232666.html

http://blog.csdn.net/lovoo/article/details/51429303

http://www.cnblogs.com/hoys/archive/2010/10/28/1863612.html

http://blog.csdn.net/jiangwei0910410003/article/details/49336613/

CTF--信息技术对抗赛ISCC之安卓逆向分析相关推荐

  1. X猫免费小说安卓逆向分析

    x猫免费小说安卓逆向分析 难度(♥) 文章目录 x猫免费小说安卓逆向分析 难度(♥) 1. 查壳 2. 抓包分析 3. sign 1. Frida-rpc 1. 查壳 我这边使用的是ApkTool, ...

  2. 20145307陈俊达_安卓逆向分析_Xposed的hook技术研究

    20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌 ...

  3. 跟我一起从零学习安卓逆向分析

    随着国家对信息安全的重视,兴起了各大CTF的赛事,其中逆向板块的安卓平台题目不断涌现.在这个互联网+的时代,移动互联网的APP犹如滚雪球一般的增长,随之而来的则是移动业务安全如风险控制.反外挂.安全合 ...

  4. 逆向so_安卓逆向 | 分析调试与so调用实战

    声明:本教程用于学习交流,如有侵权联系本人删除! 点击上方"逆向小白",选择"加为星标" 第一时间关注逆向技术干货! 使用fiddler抓取某app登录接口的时 ...

  5. 安卓逆向分析中常用动态调试方法总结

    安卓逆向之----常用动态调试方法 一. 前言 逆向分析中常用的分析方法有:静态分析.动态调试.HOOK等.动态调试的好处是:1)可以在调试的过程中知道参数或者局部变量的值以及变化过程,2)可以快速履 ...

  6. 安卓逆向分析之捕鱼达人

    总共分为2个分支 支付成功:要改order返回值:把0x0改为0x1 支付失败order返回值0x0默认的:可以让金币增加   paycode2 中0x0  改为1 payCode2 与payCode ...

  7. CTF的一道安卓逆向

    前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判 ...

  8. apk逆向思路_安卓逆向和手游辅助学习路线

    一.安卓逆向基础(建议1周) 1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向.在环境安装的工程中会遇到很多细节上的问题. 2. 第二步就是要了解 ...

  9. 什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

    简单地来说,安卓逆向是对已经打包好的APP进行反编译.源码分析了解APP实现逻辑的一门技术.我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码. ...

最新文章

  1. 基于PyTorch,如何构建一个简单的神经网络
  2. mysql中的各种锁把我搞糊涂啦~
  3. C#开发教程初级-第一天-hello Word 控制台编程
  4. FPGA In/Out Delay Timing Constaint
  5. 777后无效 执行chmod_厉害了!南航777机队和南航空姐在人民大会堂接受表彰!
  6. 就业模拟试题1_答案
  7. iOS之深入解析如何检测“循环引用”
  8. 【grafana】grafana 报错 Invalid interval string expecting a number followed by one of Mwdhmsy
  9. CUDA TOOlkit Programming Guide 3. Programming Interface
  10. 浏览器html控件编辑,HTMLEdit 示例:包装 Internet Explorer MSHTML 编辑控件
  11. 深度学习 轻量级卷积神经网络设计综述
  12. 广东南方地形地籍成图软件CASS10.1十大新亮点(资源下载在文尾)
  13. OpenCV笔记之六(4)——图像处理之颜色通道拆分、合并及颜色空间
  14. C# .net 集合-并发处理之文件读写处理
  15. linux中24点游戏下载,怀旧24点官网版-怀旧24点游戏下载v2.0.0-Linux公社
  16. HI5 2.0 交互 SDK 用户手册—— HTC Vive 系列
  17. 我也玩单片机:流水灯
  18. 利用plant simulation模拟交通信号灯控制小车通行
  19. freeswitch的application及号码集
  20. linux面试常问问题

热门文章

  1. 关机切换用户后显示远程计算机,系统远程关机权限的设置
  2. python import ssl失败_Python3.7无法正常导入ssl--ImportError: No module named _ssl
  3. 一个良好的习惯由二十八天养成。
  4. 【openGL2021版】粒子系统(全)
  5. Tyvj-1338 QQ农场
  6. 口袋西游背包数组分析
  7. 为什么现在JAVA初级程序员要求这么高?
  8. 程序猿最喜欢说的30句话
  9. 在ECharts树图中实现搜索高亮和自动展开
  10. DeepMind 研发出类脑 AI 神经元,具备超强空间导航能力