BugkuCTF-Reverse题Timer(阿里CTF)

知识点

JEB相当于Windows平台上的IDA
smali代码:双击Bytecode,出现smali代码;相较于C之汇编,那么smali之于Java
onCreate:
一个activity启动回调的第一个函数就是onCreate,这个函数主要做这个activity启动的一些需要的初始操作的工作。

onCreate之后调用了还有onRestart()和onStart()等。

解题流程

下载apk包
apk安装之后出现一个读秒的,20万秒,大于3600,所以大于一个小时,所以太慢了,不等了。
在这里插入图片描述
jeb反编译,主要JEB反编译得到的java代码看起来比较清晰
MainActivity代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源码审计

MainActivity
在这里插入图片描述
对程序进行分析
初始操作了一些变量,其beg为(((int)(System.currentTimeMillis()/1000)+200000;
this.beg = (((int)(System.currentTimeMillis() / 1000))) + 200000;beg为一个定值,在上面代码的run()函数里,k是可以变化的

MainActivity.this.t = System.currentTimeMillis();
MainActivity.this.now = ((int)(MainActivity.this.t / 1000));
给出了now的赋值,从程序的运行来看,beg在now初始赋值后应该比now大了200000,now代表的是程序运行的时间,当now变化了200000的时候,也就是说beg小于now的时候,会进入设置flag的地方。
也就是说,程序一开始k是变化的,flag的值并没被设置,只有当beg==now的时候,flag会被设置并显示,然后到下面k可能还会变化,那么这个被设定的初始flag可能就是我们要拿到的flag了。

也即当前的系统时间除以1000,再加上200000。继续看onCreate:
最先留意的是
this.val$tv2.setText(“alictf{” + MainActivity.this.stringFromJNI2(MainActivity.this.k) + “}”);
可以看出,flag与k有关,而这里有个stringFromJNI2,其是一个底层的函数
继续阅读的话,你可以看到对k做了操作。

这里k,应该为由beg和now反复运算得到。不过,beg-now应为200000,所以,我们可以复制出代码运算得到k的值,然后,修改代码重新编译
总结思路:通过beg - now代入is2函数对k进行操作,200000,需要一秒一秒的操作,而我们,直接通过写代码模拟出200000的结果,找到k,然后改动k值,直接调用,就可以得到flag了。

提取关键代码计算出k的值
直接根据k的变化部分的函数进行模拟,算出进行了200000s之后的k值:
参考java-算k值.java:
Python脚本:

def is2(n):if(n <= 3):if(n > 1):return Truereturn Falseelif(n % 2 == 0 or n % 3 == 0):return Falseelse:i = 5while(i * i <= n):if (n % i == 0 or n % (i + 2) == 0):return Falsei += 6return Truek=0for i in  range(200000,0,-1):k = k + 100 if is2(i) else k - 1
print(k)

输出k的值为1616384,下面我们需要把k值修改为这个值,然后进入进行flag设定的if语句就可拿到flag了,下面进行操作。

通过Android killer反编译
将输出flag的条件反过来,即MainActivity$1.smali里的if-gtz v0, :cond_0这句话(后面是输出The Flag Is那里的跳转)改为if-ltz v0, :cond_0
将k值改为常量,即上文提到的smali文件里的iget v3, v3 …(省略);->k:I之后添加const v3, 1616384
在这里插入图片描述
就是大于改为小于,gt为大于,lt为小于,请求时间与系统时间的差值小于0才会显示flag
在这里插入图片描述
插入这句话,原因是k保存在v3寄存器内,因此修改v3就能修改k
(这里的v0,v1,v2,v3等都是寄存器,添加的指令就是寄存器的赋值)

把if的判断条件进行修改
if-gtz v0, :cond_0 的意思是,如果v0>0,就跳转到:cond_0,所以把gtz改为ltz。
在alictf里面的k值后面再对k进行设定。

保存,重新编译下。

修改后生成的apk路径:
file:F:\CTF\CTF_Tool\Reverse\Android\AndroidKiller\AndroidKiller_v1.3.1\projects\file\Bin\file_killer.apk
然后在模拟器里运行就可以拿到flag了。
在这里插入图片描述

注意

编译译打包程序
在编译的时候遇到以下问题
Project\res\values-v23\styles.xml:6: error: Error retrieving parent for item: No resource found that matches the given name ‘@android:style/WindowTitleBackground’.

Project\res\values-v23\styles.xml:6: error: Error retrieving parent for item: No resource found that matches the given name ‘@android:style/WindowTitleBackground’.

解决方法

解决方法
找到res/value-v23/styles.xml,把resources下的东西注释掉
找到res/value/public.xml,把所有带Base.V23的东西(两个)注释掉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据重新定义未来,2018 中国大数据技术大会(BDTC)豪华盛宴抢先看!

随着信息技术的迅猛发展&#xff0c;数据的重要性和价值已毋庸置疑&#xff0c;数据正在改变竞争格局&#xff0c;成为重要的生产要素&#xff0c;更被定义为“21世纪的新电力”。在信息高速传播的今天&#xff0c;数据已经渗透到每一个行业和业务职能领域&#xff0c;指数级的…

BugkuCTF-Reverse题signin

知识点 reverse() 功能&#xff1a;反转数组里的元素的顺序 语法&#xff1a;arrayobject.reverse.() 这类方法会改变原来的数组&#xff0c;不可逆转 tostring() 功能&#xff1a;将各类进制的数字转化为字符串 语法&#xff1a;number.toString(radix)&#xff08;radix代表…

BugkuCTF-Reverse题SafeBox(NJCTF)

先下载软件&#xff0c;发现是个安卓的apk安装包&#xff0c;安装之后打开&#xff1a; 一、反编译查看源代码 只有一个输入框&#xff0c;其他的点不了。应该是要输入某个字符串然后判断是否正确&#xff0c;之后返回flag。 打开apk反编译&#xff1a; 两个类主要的差别就是…

人工智能进行时:人类的未来与未来的人类

人类的语言实在算不上严密。经过几千年的发展&#xff0c;人类语言能表达的意思越来越丰富&#xff0c;能够产生的歧义也越来越多&#xff0c;各种语言都有众多由双关语制造的段子。这对于计算机来说可不算是件好事&#xff0c;想要理解人类语言的真正含义&#xff0c;不仅需要…

BugkuCTF-Reverse题NoString

知识点 我们需要知道异或&#xff08;^&#xff09;操作 举例&#xff1a;11001001^0011000111111000 101;011;110;000异真同假 当我们得到11111000和00110001&#xff0c;我们怎么得到11001001&#xff1f;当然也是异或 11111000^0011000111001001 C语言的9u即异或9 c语言数…

干货(附源代码) | 爬取一万条b站评论,分析9.7分的新番凭啥这么火?

7月番《工作细胞》最终话在十一前放出。这部动漫在b站上评分高达9.7。除了口碑之外&#xff0c;热度也居高不下&#xff0c;更值得关注的是连很多平时不关注动漫的小伙伴也加入了追番大军。这次我们的目标是爬取b站上的所有短评进行分析&#xff0c;用数据说明为什么这部动漫会…

BugkuCTF-Reverse题mobile2(gctf)

下载文件 将AndroidManifest.xml直接放在010里面找到flag 此题根本不像个逆向题

BugkuCTF-Reverse题mobile1(gctf)

知识点 java.security.MessageDigest类 功能&#xff1a;用于为应用程序提供信息摘要算法的功能&#xff0c;如md5和SHA。换句话说&#xff0c;就是生成md5或者是SHA密码。 相关&#xff1a; getinstance:静态函数&#xff0c;用来实例操作和初始操作。 update:处理数据 reset…

面趣 | 苹果最刁钻的20个面试题,试试你会通关吗?

如同大部分硅谷公司一样&#xff0c;苹果会在面试中询问基于你过去工作经历的技术难题&#xff0c;以及与技术不太相关的“烧脑”谜题。有一些需要复杂的数学计算&#xff1b;还有一些虽然简单&#xff0c;但是语义却模糊不清。准备好了么&#xff1f;我们开始吧&#xff01; 以…

AR热度不在? NO! 三星开发者大会将聚焦AR

目前&#xff0c;IT界普遍关注人工智能、大数据、云计算、AR以及区块链等技术&#xff0c;而这些技术中&#xff0c;AR早在1990年被提出&#xff0c;是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术&#xff0c;这种技术的目标是在屏幕上把虚拟世界…

Cloud一分钟 |2018天猫双11结果出炉:2135亿;工信部透露:6G概念研究也在今年启动;英特尔39款至强新处理器曝光...

Hello&#xff0c;everyone&#xff1a;11月12日早&#xff0c;星期一&#xff0c;新的一天祝大家工作愉快&#xff01;CSDN一分钟新闻时间&#xff1a;双十一成交额 2135亿元&#xff01;张勇&#xff1a;不为数字而做11月12日零点&#xff0c;2018年天猫双十一落下帷幕&#…

BugkuCTF-Reverse题不好用的ce

解题 方法一 下载程序&#xff0c;运行一下&#xff1a; 点确定&#xff0c;有会弹出一个新的窗口&#xff1a; 点击Command按钮&#xff0c;左上角的数字就会增加&#xff0c;大概是要我们点击一万次&#xff1a; PEiD查加壳&#xff1a; 并没有加壳&#xff0c;是MFC编程…

BugkuCTF-Reverse题逆向入门

此题相比于逆向题&#xff0c;更像杂项题 010editor打开一看发现是图片的base64编码

Cloud一分钟 |百度遭北京信管局行政处罚;双11计算能力超100万核;腾讯回应高管被抓系谣言...

Hello&#xff0c;everyone&#xff1a;11月14日早&#xff0c;星期三&#xff0c;新的一天祝大家工作愉快&#xff01;CSDN一分钟新闻时间&#xff1a;百度遭北京信管局行政处罚 进入电信业务不良名单相关部门表示&#xff1a;”后续相关公司如果再犯&#xff0c;应当有更严厉…

BugkuCTF-Reverse题入门逆向多解法

补充&#xff1a;IDA里面十六进制转字符的快捷键&#xff1a;R 方法一 第一步PEID,这里可以看出程序是32位的 查壳&#xff1a;&#xff08;无壳&#xff09; 拖进IDA32分析&#xff1a; 先查看伪码&#xff1a;F5 找到main函数 发现有许多 mov 指令&#xff0c;66H 是 ‘f…

从实践出发,腾讯云深入解读云端数据库技术

毋庸置疑&#xff0c;数据已经成为信息化社会最关键的基础元素之一。离开数据的支持&#xff0c;大数据、人工智能等技术就都没有了用武之地&#xff0c;信息化、智能化也就成了空谈。而数据库则是存储和承载数据的重要场所&#xff0c;因此&#xff0c;其重要性不言而喻。随着…

Python input 函数 - Python零基础入门教程

目录 一.前言二.Python input 函数简介三.Python input 函数实战四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 Python 内置函数其实挺多的&#xff0c;其中 input 和 eval 算得上比较特殊&#xff0c;input 属于交互式内置函数…

Python map 函数 - Python零基础入门教程

目录 一.前言二.Python map 函数语法简介三.Python map 函数实战 1.使用 map 函数2.map 函数配合 lambda 匿名函数一起使用 四.Python map 函数效率对比五.Python map 函数总结六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 截…

马克!程序员必须收藏的 10 类工具库,助你提高效率变大神

对程序员和IT专业10个有用的工具和库橙色的扩音器挂在橙色的墙上”Oleg Laptev在Unsplash网站上写道。每一个行业都有它自己的一些工具。软件行业也不例外。一个好的程序员比其他人更加熟悉那些工具&#xff0c;也能比一般的程序员更善于使用那些工具。但是&#xff0c;有一些工…

BugkuCTF-Reverse题特殊的Base64

知识点 换表的base64特点&#xff1a; 1.出现64个字节的字符串&#xff08;其实应该叫做表&#xff09;作为数组取值&#xff0c;并且&#xff08;经常&#xff0c;不是一定&#xff09;出现“/”和“”符号 2.作为补位&#xff0c;体现为对3求余&#xff08;%3&#xff09; …