CTF的一道安卓逆向】的更多相关文章

前几天打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…
安卓逆向(一)--Smali基础 标签(空格分隔): 安卓逆向 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放位置,一般由NDK编译得到,常见于使用游戏引擎或JNI native调用的工程中 META-INF文件夹 存放工程一些属性文件,例如Manifest.MF res文件夹 资源目录2:asset和res都是资源目录但有所区别,见下面说明 AndroidManifest.xml Android工程的基础…
20145307陈俊达_安卓逆向分析_Xposed的hook技术研究 引言 其实这份我早就想写了,xposed这个东西我在安卓SDK 4.4.4的时候就在玩了,root后安装架构,起初是为了实现一些屌丝功能,比如自动抢红包,微信阻止撤回,语音可转发等效果,现在步入了SDK 6.0时代,安上了黑域还有绿色守护真的省电,尤其你在装谷歌全家桶的时候,那个是真的费电啊!这篇文章,我想写一点xposed的工作原理.在不修改APK的情况下,影响其运行过程的服务框架.可以根据自己的需求编写模块,让模块控制目标…
20145307陈俊达_安卓逆向分析_APKtools分析smail 引言 真刺激呢!到了第二篇博客了,难度开始加大,之前是简单的dex2jar和有图形界面的jd-gui,现在来隆重介绍强大的反汇编工具apktool,这次开始将使用汇编的知识了 直接开始 创建一个安卓程序,emptyactivity就行,主java代码和xml布局代码如下: public class MainActivity extends Activity { private final String ACCOUNT="jcl…
20145307陈俊达_安卓逆向分析_dex2jar&jd-gui的使用 引言 这次免考选择了四个项目,难度也是从简到难,最开始先写一个工具的使用 想要开发安卓首先要会编写代码,但是想要逆向分析安卓的话就要对它的输出文件结构有所了解.首先我们要先了解安卓的输出文件结构. start! 开发工具一般就是eclipse和官方的安卓studio,两者文件结构略有不同,这里用官方的安卓studio也就是IDEA IDE+SDK来进行讲解 app文件夹就是src文件夹用来存放java相关代码,就是源文件.…
http://bbs.pediy.com/thread-218798.htm     前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现反编译出来的dex 只有几个类 逻辑都是调用so   真正的dex会被加载到内存中隐藏起来 加固应用都是多dex这种形式 要想拿到他真正的dex 需要进行脱壳处理  基本原理都是从内存中dump 我一般会先用工具来尝试 不行的话就得上 IDA(反汇编神器)超级强的一个工 具 杀手级别 贯穿移动端 P…
转载自吾爱破解安卓逆向入门教程 APK的组成 文件夹 作用 asset文件夹 资源目录1:asset和res都是资源目录但有所区别,见下面说明 lib文件夹 so库存放位置,一般由NDK编译得到,常见于使用游戏引擎或JNI native调用的工程中 META-INF文件夹 存放工程一些属性文件,例如Manifest.MF res文件夹 资源目录2:asset和res都是资源目录但有所区别,见下面说明 AndroidManifest.xml Android工程的基础配置属性文件 classes.d…
之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结. 一.IDA常用快捷键总结 Shift+F12:快速查看so文件中的字符串信息,分析过程中通过一些关键字符串能够迅速定位到关键函数: F5: 可以将ARM指令转化为可读的C代码,同时可以使用Y键,对JNIEnv指 针做一个类型转换,从而对JNI里经常使用的JNIEnv方法能够识别: Ctrl + S: 有…
EasyJNI 最近正好在出写JNI,正好看到了一道JNI相关的较为简单明了的CTF,就一时兴起的写了,不得不说逆向工程和正向开发确实是可以互补互相加深的 JNI JNI(Java Native Interface)即java本地接口,众所周知,android有四层结构(也有说五层结构,即多了一个抽象层,这里不予讨论),应用层与应用接口层是用Java写的,而C/C++核心库和linux内核层由C/C++写的,既然知道了这一点,那理解JNI就很简单了,Java和C/C++肯定是不能直接互相调用的,…
参考链接:https://www.52pojie.cn/thread-395689-1-1.html res目录下资源文件在编译时会自动生成索引文件(R.java ), asset目录下的资源文件无需生成索引. 一般来说:使用C++游戏引擎的资源文件放在asset下 java开发中除音频和视频资源(放在raw或asset下),均放在res下. Dalvik字节码是什么? Dalvik是Google专门为Android设计的一个虚拟机. Dalvik VM是基于寄存器的,而JVM是基于栈的,Dal…
参考:https://www.52pojie.cn/thread-396966-1-1.html Smali中的包信息 .class public Lcom/aaaaa; //他是com.aaaaa这个package下的一个类. .super Lcom/bbbbb; //继承自com.bbbbb这个类. .source "ccccc.java" //这是一个有ccccc.java编译得到的Smali文件. Smali中的声明 一般来说是这个样子: # annotations .anno…
这道题不是说太难,但是思路一定要灵活,灵活的利用源码中给的东西.先看一下源码. 首先要理解大意. 这段源码的大致的意思就是,先将flag的值读取放在$flag里面. 后面再接受你输入的值进行判断(黑名单).说实话这道题后面把eval去掉也是可以做的.既然这道题把flag的值放进了变量里面,那么我们就需要将其输出就行了!! 当然这里面是有waf的. 我们看一下吧 基本的waf都在这里面.其他的都好理解,就是那个get_defined_functions()有点不同. 查了一下大致意思就是说输出当前…
这道题以前做过但是没有好好的总结下来.今天又做了一下,于是特地记录于此. 首先就是针对源码进行审计: 关于create_function这个函数可以看一下这个:http://www.php.cn/php-weizijiaocheng-405287.html 我们先来了解一下生成的匿名函数是什么形式的. 按照这里来说那么生成的匿名函数应该是这样的 <?php function lamdba() { $_GET[code]; }?> 函数中间的部分在create_function中默认以eval(…
一, android分两种 1.Android 5.0以下(不含5.0) dalvik字节码 为dalvik虚拟机(jit机制) 基于寄存器架构 .dex=>dexopt=>.odex dalvik加载执行的odex文件 2.Android 5.0及以上(含5.0) art虚拟机(aot机制) .dex=>dex2oat=>.oat art加载执行的是oat文件 二,如何为区分是哪中虚拟机 libdvm.so dalvik虚拟机 或者/system/bin/dexopt libar…
1.在/data/app下以报名为文件夹名新建文件夹 APK包存放在这里 以及lib文件 存放so 2./data/dalvik-cache 存放dex dex是dalvik虚拟机可执行文件 3./data/data/ 存放应用数据 刚开始没什么数据 打开apk后资源释放 数据变多 4./data/system/packages.xml 系统把 apk版本 签名 内容提供者 入口点 入口界面等 放在这里 可以用来确认apk是否安装 安装流程: 复制APK安装包到data/app目录下,解压并扫描…
前言 因为某个机缘,我拿到一个赛车app,玩了一会想买个装备,居然要我掏钱包,作为一名cracker,我觉得我的尊严受到了严重的蔑视(无奈钱包空空),我觉得要捍卫我那脆弱的玻璃心(钱包),所以,开干吧.我搜索了网上相关的帖子,发现这个apk的破解都是讲了关键点都在哪里,没有具体的关键点查找思路,所以我重新自己破解了一次,中间多次误入歧途,我把自己的详细思路发在这里,与所有的菜鸟共勉. 工具 Android killer v1.3.1.0  -- 用于搜索字符串和重打包,下文使用缩写AK Apkt…
IDA 反编译 ObjDump反编译 ObjDump是ndk环境自带的一个脚本,在android-ndk-r10c/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin这一目录下 Objdump的使用命令 objdump -f test 显示test的文件头信息 objdump -d test 反汇编test中的需要执行指令的那些section objdump -D test 与-d类似,但反汇编test中的所有secti…
跳转指令 B 无条件跳转 BL 带链接的无条件跳转 BX 带状态切换的无条件跳转 BLX 带链接和状态的无条件跳转 存储器与寄存器交互数据指令(核心) 存储器:主存和内存 寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,他可以放各种类型的数据 存储地址单元:地址(如如0x00004000)与地址中存在的值 LDR:从存储器中加载数据到存储器←Load LDR R8,[R9,#] R8为待加载数据的寄存器,加载值为R9+0x4所指向的存储单元 STR:将寄存器的数据存储到存储器中→St…
这似乎是一道安卓逆向题??我就是没有搞懂安卓逆向原来是misc吗... 安卓逆向一个例子 工具准备 1.apktool--可以反编译软件的布局文件.图片等资源,方便大家学习一些很好的布局: 2.dex2jar--将apk反编译成java源码(classes.dex转化成jar文件): 3.jd-gui--查看APK中classes.dex转化成出的jar文件,即源码文件. 参考:https://blog.csdn.net/renwudao24/article/details/79032889 a…
网络攻防大作业学习方向思路 一直对CTF比赛有参与的兴趣,但由于课程比较多,一直没有足够的时间系统的去了解与训练.所以我想利用接下来的几周时间对CTF比赛经行练习.并找到自己所擅长或感兴趣的方向深入研究下去,在自己暑假或研二时光可以参加比赛,以赛代练. CTF 竞赛内容 因为 CTF 的考题范围其实比较宽广,目前也没有太明确的规定界限说会考哪些内容.但是就目前的比赛题型而言的话,主要还是依据常见的 Web 网络攻防. RE 逆向工程. Pwn 二进制漏洞利用. Crypto 密码攻击. Mobi…
@双系统装kali,专门渗透的,ubantu要自己下工具,但是娱乐性比较好 @做题 i春秋 https://www.ichunqiu.com/battalion @网站 xctf近期赛事https://www.xctf.org.cn/ctfs/recently/ i春秋https://www.ichunqiu.com/ CG-ctf   https://cgctf.nuptsast.com/challenges#Crypto 攻防世界 bugku (队长经常康来着)安全客https://www.…
安卓动态调试七种武器之长生剑 - Smali Instrumentation 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器.因此,笔者将会在这一系列文章中(共7篇)分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用. 0x01 长生剑 长生剑是把神奇的剑,为白玉京所配,剑名取…
第一课 讲解了关于在安卓破解之中环境的配置及所需要用到的软件,重要的软件是Androidkiller,安卓逆向助手 第二课讲解了java与smali的关系,从smail角度详细的分析了一个简单的HelloWorld的apk 第三课讲解了二次破解 对于某些破解网站,从其网站下载之后在手机上打开之后,会有提示,这就需要我们安装其的app客户端才能实现破解,二次破解即可绕开此验证进入游戏 去安装盒子,去除toast提示,去除背景图片 安装盒子的那个apk是放在asset文件夹之中,当用户安装游戏(从该…
导语: 小A同学:会抓包有什么好学习的,不就用一个工具设置个wifi代{过}{滤}理就OK了嘛,还不是很多做不了.不如学习安卓逆向.didi科学家:不好意思,抓包可以为所欲为. 其实学习抓包,完完全全和OD是一模一样的逻辑,尤其是封包逆向.使用OD需要知道jmp等指令是什么意思,而抓包也是一样的逻辑! 一.封包字段的含义<ignore_js_op> 如图所示,Fiddler的整个界面就是这样,那么这些字段究竟是什么意思呢?这里给大家说一下:Result:HTTP状态码 Protocol:请求使…
1.0.0 Summary Tittle:[Linux]-NO.87.Assembly.1.滴水逆向.1.001-[基础]- Style:Java Series:Log4j Since:2017-04-24 End:2017-05-07 Total Hours:30+ Degree Of Diffculty:5 Degree Of Mastery:5 Practical Level:5 Desired Goal:5 Archieve Goal:3 Gerneral Evaluation:3 Wr…
copy : https://blog.csdn.net/u012573920/article/details/44034397 1.Smali简介 Smali是Dalvik的寄存器语言,它与Java的关系,简单理解就是汇编之于C.假如你对汇编有足够的驾驭能力,那你可以通过修改汇编代码来改变C/C++代码的走向.当然,学过汇编的都清楚,汇编比BrainFuck还难学,更不用说去反编译修改了. 但是Smali有一点不一样,就是它很简单,只有一点点的语法,只要你会java,了解Android的相关知…
1.栅栏密码 在IDF训练营里做过一道关于栅栏密码的问题. 栅栏密码的解法很简单,也有点复杂,字符长度因数多得会有很多个密码.对,栅栏密码的解法就是:计算该字符串是否为合数,若为合数,则求出该合数除本身和1的因数,然后将字符串分隔.用笔者自己写的解法就是这样: 凯撒密码,古代凯撒大帝用来打仗时的密码.凯撒密码在外界也有很多种解法.这里我用在国外CTF平台WeChall一道凯撒密码来讲解 密码术可以大致分为两种,即移位和替换,当然也有两者结合的更复杂的方法.在移位中字母不变,位置改变:替换中字母改…
如今移动互联网已经完全融入到我们的生活中,各类APP也是层出不穷,因此对于安卓APP安全的研究也尤为重要.本文通过对一款安卓APP的破解实例,来引出对于APP安全的探讨.(本人纯小白,初次接触安卓逆向一星期,略有体验,在这里分享一下) 本次破解的安卓APP是某款射击类游戏,我们发现在游戏里面有购买补给的功能,那么我们就针对这个功能进行破解,旨在达到免费购买. 首先,对该游戏进行还原,即反编译.反编译后可以查看该APP的配置文档.算法逻辑等,方便我们对其进行分析.在这里,我们使用工具Android…
最近公司需要测试安卓app安全,但安卓基本上0基础,决定开始学习下安卓逆向根据吾爱破解上教程 <教我兄弟学Android逆向系列课程+附件导航帖> https://www.52pojie.cn/thread-742703-1-1.html,开始学习记录一下自己学习的过程 破解的程序: https://pan.baidu.com/s/10hxJITuLYr11p9MfrmGpRA 提取码:r7wa 第三章任务是破解水果大战 首先打开游戏,发现是有很多地方需要收费的,我们就反编译这个app,改动一…
Jarvis OJ部分逆向题解 很久没有写博客了,前天上Jarvis OJ刷了几道逆向,保持了一下感觉.都是简单题目,写个writeup记录一下. easycrackme int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v3; // rdi char v5; // [rsp+0h] [rbp-38h] char v6; // [rsp+1h] [rbp-37h] char v7; // [rsp…