2016 alictf Timer writeup
Timer-smali逆向
参考文档:http://blog.csdn.net/qq_29343201/article/details/51649962
题目链接:
https://pan.baidu.com/s/1jINx7Fo (在里面找相应的名字就行)
题目描述:
每秒触发一次计算,共有200000秒,答案参与计算,不可能等待下去。
使用工具:
Android Killer,jadx-gui
解题方法有多种,我参照网上的一种方法。通过对native层,代码的还原,计算出200000秒后的关键变量k,传入主调用,得到答案
解题过程:
System.currentTimeMillis()相当于是毫秒为单位,获取当前时间

先是把单位变成秒,然后加上200000秒
第二块逻辑,用于筛选秒数的自定义函数,可以忽略,之后按代码逻辑就行

第三块逻辑,主程序段,包含最后打印flag值的代码段

分成三段来看:
第一段:super继承,调用页面设计框架,实例化handler函数
第二段:t的作用在于将时间一点一点减少,beg的值在前面,代表一开始时间,now代表现在的时间
第三段:当差值为0或小于打印flag,否则调用is2函数判断,true,k+100,false,k-1
所以有了下面的解密程序
def is2(n):
if (n <= 3):
if (n > 1):
return True
return False
elif (n % 2 == 0 or n % 3 == 0):
return False
else:
i = 5
while (i * i <= n):
if (n % i == 0 or n % (i + 2) == 0):
return False
i += 6;
return True; def main():
time = 200000
k = 0
while time > 0:
if is2(time):
k += 100
else:
k -= 1
time -= 1
print(k) if __name__ == '__main__':
main()
将得到的k值传给native代码,此时的k是经过200000运算的k,传进去直接返回结果
在传入native的时候要注意,首先要确定run函数的位置,这一块方法结束了,没找到逻辑,

通过字符串搜索找到run函数的位置,在MainActivity$1.smali中

直接将k传入不用运行200000次,需要更改"The flag is:"之前的关键跳转
if-gtz v0, :cond_0 改为 if-ltz v0, :cond_0
根据分析,k的值是v3的值,所以要在获取v3之后,修改v3的值

重打包,得到flag

2016 alictf Timer writeup的更多相关文章
- H4CK1T CTF 2016 Mexico-Remote pentest writeup
进去网站之后发现连接都是包含类型的,就能想到文件包含漏洞(话说刚总结过就能遇到这题,也算是复习啦) 这里用php://filter/read=convert.base64-encode/resourc ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- zctf 2016 android writeup - Jieming的博客
本文为2016年zctf中android的writeup. 首先点我下载题目.使用jeb反编译,对username和password进行部分验证后,再将username+password及一个数据库查 ...
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- 2016第二届陕西省网络空间安全大赛WriteUp
2016年5月28号(正式比赛) 有选择题和实践题,俩队员在弄选择题时,我去拿了web1的一血. 0x01 web 是一道代码审计题,发包,返回了源代码: <?php if (isset($_G ...
- AliCTF 2016
上上周参加了阿里的CTF,靠着最后绝杀队伍有幸拿到了国内第一名,也顺利进入了XCTF Final.把自己做的几个题简单写了下,发出来也算个总结吧. PWN-FB 经典的null byte overfl ...
- IntelliJIdea 2016.2 使用 tomcat 8.5 调试spring的web项目时,bean被实例化两次导致timer和thread被启动了两遍的问题的解决
今天新搭建了一个spring的web项目,项目启动时会启动一个线程,线程里定时执行任务,另外还启动了一个定时器,每秒钟统计系统吞吐量等业务性能数据.但是调试的时候惊奇的发现定时器和线程均被启动了两次. ...
- BUGKU-逆向(reverse)-writeup
目录 入门逆向 Easy_vb Easy_Re 游戏过关 Timer(阿里CTF) 逆向入门 love LoopAndLoop(阿里CTF) easy-100(LCTF) SafeBox(NJCTF) ...
随机推荐
- mysql ibdata1损坏
机房一台服务器上的mysql运行一段时间了,突然出现了一个很奇怪的现象:重启后无法恢复了!准确情况是:启动mysql后随即就又关闭了. 查看mysql错误日志如下: 160920 22:41:41 m ...
- jRebel与xRebel的使用
jRebel: https://blog.csdn.net/liuzhigang828/article/details/72875190 xRebel: https://blog.csdn.net/a ...
- Grunt安装与环境配置
公司项目还没有前后端分离,而前端是使用node.js搭建起来的,现在需要自己动手开发,故学习下并做为记录防止以后忘记. grunt依赖node.js,所以在安装之前确保你安装了 Node.js.然后开 ...
- codeforces794D dfs+图上hash
http://codeforces.com/problemset/problem/794/D 题意:在一个国家有 n 座城市和一些双向边.这些城市被编号为 1 到 n. 一共有 m 条双线边,第 i条 ...
- Java泛型、List接口整理
泛型 package com.oracle.demo01; import java.util.HashMap; import java.util.Iterator; import java.util. ...
- JavaSE_坚持读源码_ClassLoader对象_Java1.7
ClassLoader java.lang public abstract class ClassLoader extends Object //类加载器的责任就是加载类,说了跟没说一样 A clas ...
- C++ Random 的使用
1.rand() 方法 rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 这样,如果你要产生0~10的10个整数,可以表达为: int N ...
- 15. 迭代器模式(Iterator Pattern)
动机(Motivate): 在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历 ...
- bootstrap实现checkbox全选、取消全选
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 最新版本的 ...
- idea打开项目没有文件目录
如题,利用idea打开一个项目,然而并没有src等主要文件目录. 方法:使用ctrl+shift+alt+s打开目录结构,选择module,再选择import module,注意选择SDK,即JDK.