前几天打CTF时遇到的一道安卓逆向,这里简单的写一下思路

  • 首先用jadx打开apk文件,找到simplecheck处(文件名是simplecheck),可以看到基本逻辑就是通过函数a对输入的内容进行判断,如果正确就弹出You get it。

  • 我们去类a里看一下可以发现这个就是一道简单的算法

  • 判断的条件就是在这一个循环里,可以看到成功的条件是,而iArr[]为flag :

a[i2]== b[i2] * iArr[i2]* iArr[i2] + c[i2] * iArr[i2] + d[i2]

a[i2 + 1] == b[i2] * iArr[i2 + 1] * iArr[i2 + 1] + c[i2] * iArr[i2 + 1] + d[i2]

 1 int i2 = 0;
 2 while (i2 < c.length)
 3 {
 4     if (a[i2] != (((b[i2] * iArr[i2]) * iArr[i2]) + (c[i2] * iArr[i2])) + d[i2] || a[i2 + 1] != (((b[i2] * iArr[i2 + 1]) * iArr[i2 + 1]) + (c[i2] * iArr[i2 + 1])) + d[i2])
 5     {
 6         return false;
 7     }
 8     i2++;
 9 }
10 return true;

  • 用python进行爆破

a.length指出flag的长度为35个,并且第一个值赋值为0,所以第一个循环从1到34。并且iArr[]里是byte,java中byte的范围从-128到127,所以第二个循环是0到127(ASCII从0开始)

1 int[] iArr = new int[a.length];
2 iArr[0] = 0;

判断条件进行变化,使iArr变成一个变化值f,所以判断条件变为:

(a[m] == b[m-1] * f * f + c[m-1] * f + d[m-1])
(a[m] == b[m] * f * f + c[m] * f + d[m])

最后的爆破程序是

 1 a= [0, 146527998, 205327308, 94243885, 138810487, 408218567, 77866117, 71548549, 563255818, 559010506, 449018203, 576200653, 307283021, 467607947, 314806739, 341420795, 341420795, 469998524, 417733494, 342206934, 392460324, 382290309, 185532945, 364788505, 210058699, 198137551, 360748557, 440064477, 319861317, 676258995, 389214123, 829768461, 534844356, 427514172, 864054312]
 2 b= [13710, 46393, 49151, 36900, 59564, 35883, 3517, 52957, 1509, 61207, 63274, 27694, 20932, 37997, 22069, 8438, 33995, 53298, 16908, 30902, 64602, 64028, 29629, 26537, 12026, 31610, 48639, 19968, 45654, 51972, 64956, 45293, 64752, 37108]
 3 c= [38129, 57355, 22538, 47767, 8940, 4975, 27050, 56102, 21796, 41174, 63445, 53454, 28762, 59215, 16407, 64340, 37644, 59896, 41276, 25896, 27501, 38944, 37039, 38213, 61842, 43497, 9221, 9879, 14436, 60468, 19926, 47198, 8406, 64666]
 4 d= [0, -341994984, -370404060, -257581614, -494024809, -135267265, 54930974, -155841406, 540422378, -107286502, -128056922, 265261633, 275964257, 119059597, 202392013, 283676377, 126284124, -68971076, 261217574, 197555158, -12893337, -10293675, 93868075, 121661845, 167461231, 123220255, 221507, 258914772, 180963987, 107841171, 41609001, 276531381, 169983906, 276158562]
 5
 6 flag="";
 7 for m in range(1,34):
 8     for f in range(0,127):
 9         if (a[m] == b[m] * f * f + c[m] * f + d[m]) | (a[m] == b[m-1] * f * f + c[m-1] * f + d[m-1]) :
10             flag+=chr(f)
11             break
12         else:
13             pass
14 print(flag+"}")

  • 结果为

Simplecheck.apk

转载于:https://www.cnblogs.com/QKSword/p/8676812.html

CTF的一道安卓逆向相关推荐

  1. 安卓逆向从入门到嗝屁之另一道CTF题目

    小伙伴发了一道安卓的CTF题目,有空就看了下: 首先,这次就先不装了,开个模拟器卡的一P,androidkiller.gda等无法打开,jeb正常打开(当然dex2jar打开dex文件,再用jd-gu ...

  2. 安卓逆向_24( 一 ) --- Hook 框架 frida( Hook Java层 和 so层) )

    From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758 详解 Hook 框架 frid ...

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

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

  4. CTF--信息技术对抗赛ISCC之安卓逆向分析

    0x01 题目介绍 本题目是一道信息安全大赛上的安卓逆向题目,主要考察选手,逆向分析能力, 反汇编能力,安卓程序结构分析能力,以及常见的安全加密编码算法得能力.题 目下载 http://downloa ...

  5. 逆向学习(二) 安卓逆向

    安卓逆向 0.准备工作和大纲 JAVA环境.apktool.android APK.JADX.keytool.jarsigner(最后两个为JAVASDK自带工具) java基本知识:源代码文件为XX ...

  6. c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法

    0x00 frida简介 frida是近几年才推出的一款全平台的逆向神器.功能上主要采用动态hook的方式,加入log,修改逻辑等.可以对java,native等hook. 具体使用情况,谁用谁知道. ...

  7. BUUCTF-Reverse:helloword + findit(安卓逆向)

    Helloword+findit Helloword findit 这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目~ 工具下载: https://down.52pojie.cn/Tools/ H ...

  8. android获取apk名称_安卓逆向——APK安装流程

    制丨文生 整理丨阿星 很多学习安卓逆向的朋友大多都会卡在安卓apk上,今天小生就来给大家讲解一下,安装apk的流程,希望能帮助到大家. 安装方式: ⑴系统程序安装 ⑵通过Android市场安装 ⑶手机 ...

  9. native层 安卓_安卓逆向——拼xx协议java层分析

    制丨阿星 整理丨阿星 老铁们大家好,今天小编给大家带来很实用的技巧叫拼xx协议java层分析,有啥不足的地方望大家指点指点! 首先抓包  反编译 这个时间段我们方法剖析一下 找到onclick 看他的 ...

最新文章

  1. Linux系统监控工具
  2. android setGravity()的使用
  3. c语言如何获取按键,c语言获得键盘的按键
  4. 贺TDSQL喜提286万QPS!本文回顾了它的十年锻造之路
  5. .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...
  6. 局域网网管软件_网管软件有哪些?那些不同之处
  7. Spark GraphX算法 - PageRank算法
  8. python3项目源代码下载_python3中文版下载
  9. Teamcenter 开发中的一些问题
  10. 电子工业出版社PPT图书优秀作者上海书城讲座
  11. FL Studio20.9中文语言版安装下载 附带免费插件
  12. 计算机软件免税,软件产品的增值税优惠有哪些?
  13. QT开发环境简介、安装以及搭建VS2019环境
  14. Qt学习:无边框界面的实现总结
  15. 什么是UPS UPS的选购技巧介绍
  16. pyMuPDF How To
  17. 正则改造VS Code里React类组件的自定义snippet
  18. iOS:如何在iphone、ipad上安装一些常用命令行命令
  19. 计算机二级软件VC++6.0下载地址
  20. Java类继承(extends)题目练习,求周长,求面积

热门文章

  1. cnblog博客CSS定制
  2. review——C# (6)虚方法和覆写方法
  3. TCP/IP协议学习之TCP、IP篇
  4. WP7开发—Silverlight多点触摸事件详解【含Demo代码】
  5. [Silverlight入门系列]使用MVVM模式(6):使用Behavior
  6. 图解MySQL数据库的安排和把持-1
  7. Creating an Extender Control to Associate a Client Behavior with a Web Server Control
  8. java 自己抛空指针异常_java Timetask 访问service 抛空指针异常解决方案
  9. wine安装lingoes
  10. linux虚拟网络设备之veth(二)