文章目录

  • 题目
  • 一、解题过程及代码分析
    • 代码分析
      • Judge() 函数分析
      • b.a() 函数分析及还原
      • b.b() 函数分析:
      • a.a() 函数分析
      • a.a()混淆函数还原
  • 总结

前言:同学发来了一个ctf比赛,在校实习期间利用空闲时间做了几道ctf题目

题目

Mobile 0x01


一、解题过程及代码分析

通过下载文件链接后得到一个apk文件

直接拖进jadx-gui-1.2.0-no-jre-win.exe 进行反编译,不考虑有没有加壳.
一般情况安卓的主界面代码都在com包下面,直接找到MainActivity 入口文件。在点击事件监听之后执行了Judge() 函数。定位Judge()函数进行流程分析。

在代码分析过程中为了更方便调试代码,把java需要用到的代码扣到本地的idea上。
根据调用Judge函数调用过程中调到了a,b,c,三个对象类,把a,b,c代码扣下来

代码分析

Judge() 函数分析

b.a() 函数分析及还原

得到第一段base64(0~16位)的还原值:SVNDQ3tkaXNwbGFj

b.b() 函数分析:

单独打印c.a() 函数:得到J0tpzHRuhTQpLauS,字符串a等于J0tpzHRuhTQpLauS

 Aes 对unj2Cn3dS9Ya1LDFPlA+eA== 解密得到字符串b等于otG28PYN8CtG

a.a() 函数分析

剩下只需要把a.a(),a.b() 函数还原就可以了,在原代码中是这样的,比较长,主要是对字符串:cdeEFGfghijkKLHIJNO9/PQYqrsMnoRSTablBCDtZ012UVWXpyzA345umvwx678= 进行取值处理

代码优化及分析

a.a()混淆函数还原

对J0tpzHRuhTQpLauS 字符串进行还原,还原代码解密后得到:ZV9hbHRlcm5hdGl2

a.b() 函数加密过程同a.a() 函数一样。
唯一的不懂是混淆字符串k等于
k = "cdYqrsMneEFwxg78=GfKlLHRSTabBCDtZ012UhiQok6VWmXpjIJNO9/PyzA345uv";b值:otG28PYN8CtG
还原代码解密后得到:ZV9tb2JpbGV9

把之前还原出来的字符串进行拼接
第一段base64(0~16位)的还原值:SVNDQ3tkaXNwbGFj
第二部分:ZV9hbHRlcm5hdGl2
第三部分:ZV9tb2JpbGV9
拼接得到:SVNDQ3tkaXNwbGFjZV9hbHRlcm5hdGl2ZV9tb2JpbGV9

最后进行base64解码得到要求的字符串:ISCC{displace_alternative_mobile}

根据题目提交的flag格式最终为:flag{displace_alternative_mobile}

总结

之前没做过啥ctf题目,刚好懂一点点java,在整个代码分析字符串的混淆思路及还原过程还是很有趣的。

某次 ctf Mobile 0x01 解题过程相关推荐

  1. CTF 关于ZIP解题过程

    CTF 关于ZIP解题 1.伪加密类型 打开之后是两张图片,一张未加密,一张已加密. 利用WinHex打开 然后在谷歌上找到大佬关于zip格式的介绍 接下来进行对比,看是否属于伪加密 通过对比,发现确 ...

  2. 逆向查找_CTFer成长之路--一道数独逆向题目解题过程(算法分析、查找线索)...

    前言 CTF 是实战性很强的赛事.仅学习理论知识,不进行实操,永远无法成为 CTF 大神.本次博客为大家解读一道数独相关的逆向,讲解解题过程,总结知识点(CTF中的套路). 题目介绍 本次选择的是出自 ...

  3. CTF学习-密码学解题思路

    CTF学习-密码学解题思路 密码学持续更新 密码学概述 密码学的发展 第一个阶段是从古代到19世纪末-古典密码 (classical cryptography) 第二个阶段从20世纪初到1949年-近 ...

  4. CTF学习-逆向解题思路

    CTF学习-逆向解题思路 持续更新 一.通用过程 通过file命令查看文件类型,判断是ELF还是PE,32位还是64位. 通过strings并重定向标准输出,然后搜索大括号 { ,看看是否能直接得到f ...

  5. CTFer成长之路--一道历届逆向题解题过程(包含脱壳、算法分析)

    前言 CTF 是实战性很强的赛事.仅学习理论知识,不进行实操,永远无法成为 CTF 大神.从本篇博客开始,我将选择有代表性的历年CTF比赛题目,介绍解题过程,工具使用以及讲解知识点. 题目介绍 本次讲 ...

  6. 7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程)

    7-1 修理牧场 (25 分)(最详解)(最容易理解的解题过程) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条很长的.能锯成N块的 ...

  7. bugku上Snowfall解题过程

    MISC的Snowfall解题过程: 刚看到打开人直接傻掉,翻译一下暴风雪???什么鬼题,有没有一样这样想的 1:先看两个txt名字,告诉了步骤1,步2,所以肯定这个有用,给个网站: Whitelip ...

  8. 攻防世界warmup新人小白友好向详细解题过程

    攻防世界warmup新人小白详细解题过程 思路:查看网页源码发现提示信息,/source.php 进行代码审计 ,主要函数找出,PHP函数记住,自己构造PAYLOAD 声明:菜菜级的水平,解析有错的不 ...

  9. 九宫格一条线连起来_九宫格的解题过程讲解

    九宫格的解题过程 第 1 步首先计算每行数字之和. 1 - 9 九个数字之和: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45 九宫格共有三行,并且每行的数字之和相等,因 ...

最新文章

  1. 从git中永久物理删除私密文件(改写git历史)
  2. react控制元素的显示或隐藏
  3. Unix环境高级编程学习笔记(七) 多线程
  4. myysql 不能远程访问的解决办法
  5. JavaScript变量声明+数据类型+数字格式+操作符+进制
  6. 【信息安全111班暑期学习工作任务】
  7. Kafka 2.8与ZooKeeper正式分手
  8. Valgrind 使用简单说明-转
  9. php java session共享_PHP实现多服务器session共享之NFS共享
  10. ES7 设置磁盘使用率水位线 allocation.disk.watermark
  11. 谭浩强 c语言 swap,C语言谭浩强完整教案.ppt
  12. vb阶乘计算机代码,速求100的阶乘的代码
  13. 机器学习之 kd 树
  14. 台达PLC与紫金桥监控组态软件的连接
  15. HDU1922 POJ3004 Subway planning “神题”留名
  16. MYSQL数据库跨服务器实时同步更新实践----文献阅读(污水管网水质预测)
  17. ie8 阻止java运行_解决IE屏蔽Java Applet问题的方法
  18. Java多线程超时判断
  19. Kali Linux入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。
  20. 手持PDA扫描枪有什么功能?

热门文章

  1. 知识点:关于屏蔽网线和非屏蔽网线的传输距离问题
  2. 杂物论第一 中华文明的根基
  3. JAVA音频研究1:解析音频文件格式(javax.sound学习指南,javax.sound学习实战)
  4. 怎样检测和维护LED显示屏系统
  5. 装饰器模式(通俗易懂)
  6. 推荐系统遇上深度学习(一三七)-[阿里]广告精排和创意优选联合优化
  7. 数电学习(六、时序逻辑电路)(二)
  8. 疫情之下特殊的升旗仪式
  9. 提问的智慧?如何提问?
  10. iOS Google Analytics(谷歌分析)开发