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,一经查实,立即删除!

相关文章

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

目录 一. Python isinstance 函数简介 isinstance 函数语法 二.Python isinstance 函数实战三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一. Python isinstance 函数简介 isinstance 函数是 **Python**中的一个内置函数&#xff0c;…

大数据重新定义未来,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代表…

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

目录 一.Python zip 函数简介二.Python zip 函数使用三.Python *zip 函数的描述和使用四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python zip 函数简介 zip 函数用于将可迭代的对象作为参数&#xff0c;将对象中对应的元素打包成…

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

目录 一.前言二.Python ChainMap 合并多个字典三.Python ChainMap 查询和遍历四.Python ChainMap 修改五.Python ChainMap 增加六.Python ChainMap 重点总结七.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.前言 假如我们有多个字典&…

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语言数…

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

目录 一.Python id 函数简介二.Python id 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python id 函数简介 每个人都有对应的身份证号码&#xff0c;并且唯一&#xff01;反之亦然&#xff0c;一个身份证号码必然对应一个…

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

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

BugkuCTF-Reverse题mobile2(gctf)

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

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

目录 一.Python update 函数简介二.Python update 函数和 ChainMap 函数区别三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在前一篇文章 **Python ChainMap **中我们介绍了关于 Python 内置函数 ChainMap 使用&#xff0c;ChainMap 函…

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; 以…

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

目录 一.divmod 函数介绍二.divmod 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.divmod 函数介绍 divmod 函数也是 Python 的内置函数&#xff0c;它是把除数和余数运算结果结合起来&#xff0c;返回一个包含商和余数的元…

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年天猫双十一落下帷幕&#…

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

目录 一.Python all 函数简介二.Python all 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python all 函数简介 参数&#xff1a;iterable 迭代器&#xff0c;元组或者列表 返回值&#xff1a;如果iterable 迭代器中的所有…

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

目录 一.Python abs 函数介绍二.Python abs 函数使用三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一.Python abs 函数介绍 abs 函数是 Python 内置函数&#xff0c;主要作用就是计算数字的绝对值&#xff01;语法如下&#xff1a; 参…

BugkuCTF-Reverse题不好用的ce

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