whklhhhh的博客

一只逆向小菜鸡

排序:
默认
按更新时间
按访问量

180804 逆向-一个Java题的CM

通常来说,java题不会出现在CTF中,因为字节码的关系几乎可以反编译出源码。 这个题目看到了一些新思路,也学到了不少东西~ 题目解压缩给了一个jar和dll,估计最终还是走到x86汇编上去了 逆向jar,发现java层控制GUI界面,最终将参数直接通过native函数送到了dll中—以前只...

2018-08-09 01:49:34

阅读数:30

评论数:0

180803 安卓-SO的反OLLVM实践

业务部提来的需求,自觉搞不来所以随便试试~ 之前找过一些资料,基本上可查阅的只有通过符号执行来反控制流平坦化的,即之前说过的TSRC的那篇文章 该文提供的脚本是基于纯PE控制流平坦化之上的,整体执行框架必须满足主分发器-子分发器-真实块-预处理器的流程才行 而实践发现ndk编译出的so,无论...

2018-08-09 01:34:49

阅读数:28

评论数:0

180802 安卓-脱壳相关

老大给了几个APP让分析,其中大多带有壳,于是记录一下抗争的经历 作为一个只会打CTF的菜狗赛棍而言,其实对壳相关接触的相对很少,只大概知道是通过一些技巧转到so中进行释放dex、解密so等操作 最先是的360壳,这个在比赛中遇到过,用drizzleDumper可以轻松拿到原DEX进行分析。它...

2018-08-09 01:19:29

阅读数:23

评论数:0

180801 安卓-AndroidEmulator的mount问题

使用DexExtractor时需要替换系统,除了替换systemimage的方法以外就得更改/system/lib中的libdvm.so 开发者提供的SystemImage是4.4Arm版本的,而模拟器上由于架构问题都是x86版本的,因此选择了替换libdvm.so等方法 由于指定4.4版本,...

2018-08-06 00:25:35

阅读数:17

评论数:0

180731 安卓-JNI方法HOOK(1)

在so被混淆,难以阅读代码的情况下,可以通过针对性的Hook来做反制处理 由于native层想要操作包相关的东西包括获取签名、获取类、获取包名等等都必须通过JNI方法,即JNIENV指针指向的方法列表,来获取,包括常用的FindClass, CallMethod等等 而这个方法列表是有限的,并...

2018-08-01 01:57:35

阅读数:16

评论数:0

180730 安卓-签名攻防

大多数App、Web等需要和服务器交互的程序中,为了保证请求是由程序自己发出的,通常会结合参数和时间戳通过一些算法来生成一个signature,即签名 服务器再通过上述参数和算法同样生成sig,与请求中携带的sig进行比较,不符则认为是第三方调用的,进行特殊处理 于是攻击者也会试图获得sig,...

2018-08-01 01:51:15

阅读数:12

评论数:0

180729 安卓-Xposed笔记(2)

今天提交才发现这几天研究的点错了,血崩orz 回头重新搞,目标so做了混淆,感觉比较像控制流平坦化 但java层几乎没做混淆,关键符号加字符串定位轻而易举,结合Hook验证后即可通过Hook进行调用 然而Native方法不知怎么的死活没有Hook到 明明调用函数都已经抓到了的说 Hook...

2018-07-31 01:57:03

阅读数:28

评论数:0

180728 逆向-SMC出题笔记

在某黑哥的指示下给他加紧出两个题目~ 最先想到的就是34c3ctf时做过的SMC题目,那个随机数混杂着自解密真的是让我久久无法忘怀 SMC题目的核心就在于自解密时的key 如果key不提供,那么考点就在于大量x86汇编中一般\x00出现的是最多的 而这需要基于一定量的代码之上才能猜出,而且...

2018-07-31 01:31:04

阅读数:27

评论数:0

180727 安卓-Xposed使用笔记(1)

这几天也用了不少Xposed了,记录一下常用的一些方法和遇到的问题当做笔记~ MultiDex的Hook 需要通过Application.class中的attach方法来实现 如果再三确认类名和包名无误后,仍然报ClassNotFound异常,并且该APK是MultiDex的,那么就可以...

2018-07-31 01:01:46

阅读数:19

评论数:0

180726 安卓-一则非正常闪退的分析

今天在逆一个App的时候死活没法运行,能够安装,但一打开就闪退 惯例查看adb的log,发现load了多个dex,还有很多第三方库做操作,产生了极其多的记录,本来以为是兼容性问题,结果试了几个终端都不行 回头继续翻log,期望能找到退出信息和报错记录,突然几条log引起了我的注意 I/And...

2018-07-27 02:09:25

阅读数:35

评论数:0

180725 安卓-签名机制

签名原理 发送者将公钥公开,对于发送数据的信息摘要用私钥加密 接受者用公钥解密该内容,与接收数据的信息摘要进行对比 从而保证 1. 接收到的数据与发布数据相同 2. 发送者是公开公钥的私钥持有人 与HTTPS相同,公钥必须可信才有意义 因此签名也需要携带一个由可信CA机构签发的证书,...

2018-07-25 23:54:02

阅读数:17

评论数:2

180724 安卓-SSLPinning及反制

简介 SSL Pinning,即HTTPS的证书校验 作用 具体解释要从HTTPS的诞生说起了 HTTP是明文传输的协议,在C/S不自行做加密处理的情况下,所有数据都是以明文形式在网络中传输的。 而在目前的庞大互联网中,大多数情况下从Client到Server要经过十几级网关转发。 ...

2018-07-25 22:39:13

阅读数:16

评论数:0

180723 安卓-run-as命令

run-as命令 功能 以root身份运行命令,可以在未root的情况下查看某个(debug模式的)应用的内部信息(沙盒文件夹) 介绍 在没有root过的手机中,用户权限是无法查看很多信息的,包括各个应用的沙盒 而run-as就向开发者提供了未root情况下访问沙盒信息的权限 执行...

2018-07-24 01:37:26

阅读数:28

评论数:0

180721 逆向-极客巅峰(Re)

Reverse Simple Base-N IDA打开,从pdb路径可以leek出现一些信息 可以看到有Base32的字样,估计算法里可能会出现相关信息 继续加载 简单重命名一下,注释上一眼就能看出来的结构 change函数里对Input做了变换,然后下面与一段字符串进行比...

2018-07-22 16:00:55

阅读数:118

评论数:0

180720 安卓-昨日问题解决

早上过去把写好的Xposed脚本跑起来,发现挂不上去,不知道是异步的问题还是当时没想起来FindAndHookMethod方法要加上Hook方法的参数的类作为参数的问题 总之最后对doInBackground的Hook成功了,把堆栈打出来以后结果与昨天的预期截然不同–就是那个JEB断不到的方法在...

2018-07-20 23:26:00

阅读数:8

评论数:0

180719 安卓-RPC对象查找不到的问题分析

通/断网情况下都抓不到HTTP包,估计彻底废弃了HTTP接口,完全使用RPC方式连接 在程序中搜索了半天,只根据单词找到了HTTP接口,但是并不是APK真正使用的连接方式,所以还要继续追溯 这个APK中没有使用Native层,导入的库也很少,搜索socket才找到了一点调用,但最终也指向了HT...

2018-07-19 23:39:59

阅读数:9

评论数:0

180718 安卓-阶段总结

这几天一直在分析实际的APP,与CTF题目比起来差别还是挺大的 CTF的代码量大多很小,最多也就十几个类,完全可以挨个看下来,有什么骚操作最多也就一两个点,所有代码看下来总会发现的 而实际中的APP视功能和体量体积会扩大很多,而且使用了很多相对而言比较难处理的工业技巧,例如异步处理、服务机制、...

2018-07-19 00:58:18

阅读数:26

评论数:0

180717 安卓-特殊权限简介

前言 Android的权限机制使得应用必须在用户同意的前提下才能进行一些敏感操作,而Android6.0新增了一个被称为运行时权限的功能。 这个功能可以申请许多用户体验很好的产品,但随之而来的是一些隐私安全问题 辅助功能权限 许多安卓使用者因为各种情况而需要以特殊方式与手机交互,包括无...

2018-07-18 01:33:17

阅读数:9

评论数:0

180716 安卓-防护基本策略(反调试)

java层 Dalvik虚拟机没有提供反调试的方法,但是可以通过反射方法来使得方法的调用变得扑朔迷离 动态获取类是更进阶的方法,通过一些解密计算等操作来得到类,可以使得动态调试较为困难 native层 Native层实质上就是Linux程序,因此反调试手段也跟Linux下的反调试基本相...

2018-07-18 01:01:33

阅读数:22

评论数:0

180715 安卓-防护基本策略(Native方法)

Native方法 安卓的底层是Linux实现,但实际上程序入口是在Dalvik虚拟机中,作为字节码和运行在虚拟机中的代码本身就不具备太强的安全性,另一方面虚拟机的执行效率也是众所周知的 因此安卓允许通过so库的加载来调用底层linux执行代码,这就是Native方法 具体使用方法为在java...

2018-07-18 00:43:54

阅读数:19

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭