![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 62
奈沙夜影
这个作者很懒,什么都没留下…
展开
-
安卓pwn - De1taCTF(BroadcastTest)
BroadcastTest背景逆向APK可知程序中仅有MainActivity$Message和三个Receiver类。前者实现了一个Parcelable类,后三个则是广播。其中Receiver1是export的,接收并向Receiver2发送广播,Receiver2和3则非export,只能接收内部发送的广播。功能为Receiver1接收base64传入的data,然后将其反序列化得到...原创 2020-05-05 11:28:43 · 26716 阅读 · 2 评论 -
180803 安卓-SO的反OLLVM实践
业务部提来的需求,自觉搞不来所以随便试试~ 之前找过一些资料,基本上可查阅的只有通过符号执行来反控制流平坦化的,即之前说过的TSRC的那篇文章该文提供的脚本是基于纯PE控制流平坦化之上的,整体执行框架必须满足主分发器-子分发器-真实块-预处理器的流程才行 而实践发现ndk编译出的so,无论是x86架构还是ARM架构都不满足上述框架–cfg相当丑,并且全部没有所谓的预处理器点了几个函数看...原创 2018-08-09 01:34:49 · 1051 阅读 · 0 评论 -
180731 安卓-JNI方法HOOK(1)
在so被混淆,难以阅读代码的情况下,可以通过针对性的Hook来做反制处理 由于native层想要操作包相关的东西包括获取签名、获取类、获取包名等等都必须通过JNI方法,即JNIENV指针指向的方法列表,来获取,包括常用的FindClass, CallMethod等等而这个方法列表是有限的,并且是一个结构体,很容易在C层进行操作,归根结底也是函数指针,那么取而代之是很简单的事情如果能够拿到...原创 2018-08-01 01:57:35 · 668 阅读 · 0 评论 -
180730 安卓-签名攻防
大多数App、Web等需要和服务器交互的程序中,为了保证请求是由程序自己发出的,通常会结合参数和时间戳通过一些算法来生成一个signature,即签名服务器再通过上述参数和算法同样生成sig,与请求中携带的sig进行比较,不符则认为是第三方调用的,进行特殊处理于是攻击者也会试图获得sig,一种方法是静态分析算法,用脚本如法炮制 静态的防御通过混淆、加壳等手段可以比较好的增加难度而另一...原创 2018-08-01 01:51:15 · 245 阅读 · 0 评论 -
180729 安卓-Xposed笔记(2)
今天提交才发现这几天研究的点错了,血崩orz回头重新搞,目标so做了混淆,感觉比较像控制流平坦化 但java层几乎没做混淆,关键符号加字符串定位轻而易举,结合Hook验证后即可通过Hook进行调用 然而Native方法不知怎么的死活没有Hook到 明明调用函数都已经抓到了的说HookNative方法Xposed也是可以HookNative方法的,只不过同样只能操作beforeHo...原创 2018-07-31 01:57:03 · 466 阅读 · 0 评论 -
180727 安卓-Xposed使用笔记(1)
这几天也用了不少Xposed了,记录一下常用的一些方法和遇到的问题当做笔记~MultiDex的Hook需要通过Application.class中的attach方法来实现 如果再三确认类名和包名无误后,仍然报ClassNotFound异常,并且该APK是MultiDex的,那么就可以试着Hook一下attach方法XposedHelpers.findAndHookMethod(A...原创 2018-07-31 01:01:46 · 800 阅读 · 0 评论 -
180726 安卓-一则非正常闪退的分析
今天在逆一个App的时候死活没法运行,能够安装,但一打开就闪退 惯例查看adb的log,发现load了多个dex,还有很多第三方库做操作,产生了极其多的记录,本来以为是兼容性问题,结果试了几个终端都不行回头继续翻log,期望能找到退出信息和报错记录,突然几条log引起了我的注意I/AndroidRuntime(19220): VM exiting with result code 0, ...原创 2018-07-27 02:09:25 · 3733 阅读 · 0 评论 -
180713 安卓-防护基本策略(混淆和签名)
混淆众所周知安卓是Java的一个分支,默认情况下Java编译时都会将变量名、方法名都信息全部包含进去,安卓也是同样与编译型语言(可以)将符号信息全部舍弃,完全依赖地址区分变量不同,解释型语言通常将信息和变量绑定使用,因此无法丢弃符号信息代码混淆编译型语言例如C语言,可以在编译时加上去除符号表和重定位信息的选项来减小生成文件的体积,对应的也会使反编译困难许多解释型语言虽然不能完全...原创 2018-07-16 00:57:18 · 238 阅读 · 0 评论 -
180720 安卓-昨日问题解决
早上过去把写好的Xposed脚本跑起来,发现挂不上去,不知道是异步的问题还是当时没想起来FindAndHookMethod方法要加上Hook方法的参数的类作为参数的问题总之最后对doInBackground的Hook成功了,把堆栈打出来以后结果与昨天的预期截然不同–就是那个JEB断不到的方法在调用异步任务那么这样一来就有几个问题需要解释了 1. JEB为什么断不到呢? 这个问题最后...原创 2018-07-20 23:26:00 · 227 阅读 · 0 评论 -
180725 安卓-签名机制
签名原理发送者将公钥公开,对于发送数据的信息摘要用私钥加密 接受者用公钥解密该内容,与接收数据的信息摘要进行对比 从而保证 1. 接收到的数据与发布数据相同 2. 发送者是公开公钥的私钥持有人与HTTPS相同,公钥必须可信才有意义 因此签名也需要携带一个由可信CA机构签发的证书,证明该公钥来自可信的发送者具体实现signapk对apk签名后会多出一个META-INF文件夹...原创 2018-07-25 23:54:02 · 198 阅读 · 2 评论 -
180724 安卓-SSLPinning及反制
简介SSL Pinning,即HTTPS的证书校验作用具体解释要从HTTPS的诞生说起了HTTP是明文传输的协议,在C/S不自行做加密处理的情况下,所有数据都是以明文形式在网络中传输的。 而在目前的庞大互联网中,大多数情况下从Client到Server要经过十几级网关转发。 而这中间,小到自己家的路由器、大到运营商的区域转发都是可以任意查看通信数据甚至篡改通信数据的。 这...原创 2018-07-25 22:39:13 · 4700 阅读 · 3 评论 -
180719 安卓-RPC对象查找不到的问题分析
通/断网情况下都抓不到HTTP包,估计彻底废弃了HTTP接口,完全使用RPC方式连接 在程序中搜索了半天,只根据单词找到了HTTP接口,但是并不是APK真正使用的连接方式,所以还要继续追溯这个APK中没有使用Native层,导入的库也很少,搜索socket才找到了一点调用,但最终也指向了HTTP虽然关键目标的HTTP包没有抓到,但是有一个每次都会同时发生的HTTP请求(URL-A),猜测...原创 2018-07-19 23:39:59 · 242 阅读 · 0 评论 -
180718 安卓-阶段总结
这几天一直在分析实际的APP,与CTF题目比起来差别还是挺大的 CTF的代码量大多很小,最多也就十几个类,完全可以挨个看下来,有什么骚操作最多也就一两个点,所有代码看下来总会发现的而实际中的APP视功能和体量体积会扩大很多,而且使用了很多相对而言比较难处理的工业技巧,例如异步处理、服务机制、消息机制等等从来没接触过的东西对于大体积的APP主要依靠字符串、关键词搜索来找到突破点,然后依靠交...原创 2018-07-19 00:58:18 · 238 阅读 · 0 评论 -
180801 安卓-AndroidEmulator的mount问题
使用DexExtractor时需要替换系统,除了替换systemimage的方法以外就得更改/system/lib中的libdvm.so开发者提供的SystemImage是4.4Arm版本的,而模拟器上由于架构问题都是x86版本的,因此选择了替换libdvm.so等方法由于指定4.4版本,因此模拟器使用AndroidStudio中的VirtualDeviceMonitor来安装使用虚拟机最...原创 2018-08-06 00:25:35 · 503 阅读 · 0 评论 -
180802 安卓-脱壳相关
老大给了几个APP让分析,其中大多带有壳,于是记录一下抗争的经历 作为一个只会打CTF的菜狗赛棍而言,其实对壳相关接触的相对很少,只大概知道是通过一些技巧转到so中进行释放dex、解密so等操作最先是的360壳,这个在比赛中遇到过,用drizzleDumper可以轻松拿到原DEX进行分析。它的原理是不断在内存中搜索DEX的头部特征,因此仅能脱下整体DEX还原的壳。后来碰到的是乐固2.8,...原创 2018-08-09 01:19:29 · 940 阅读 · 0 评论 -
190927 re-某恶作剧APK的分析
用JEB打开,首先扫一眼AndroidManifest.xml的相关信息从包名可以看出[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvszbl92-1569599143824)(https://i.loli.net/2019/09/27/ybnJIaoRwrq3tsX.png)]是一个androlua项目,稍微搜一下就可以知道是用Lua写android。所以...原创 2019-09-27 23:46:23 · 24696 阅读 · 1 评论 -
190825 reverse-ogeek初赛
好久没写博客了_(:з」∠)_回头有空补一下DEFCON的过程和题目复盘啥的…babyre浏览一遍可以看出来很明显是一种压缩算法,简单搜了一下发现比较像LZ77,但是据说有很多变种,没找到什么好的实现就接着自己逆了简单理解了一下原理,在buff内搜索与后17个字节相匹配的最大子串,如果有就记录下buff的下标和子串长度,没有则写入原始内容以供之后使用简单来说就是所有数据仅出现一次,其他地方...原创 2019-08-25 23:56:30 · 24267 阅读 · 3 评论 -
190705 安卓-对抗AndResGuard的重打包
换了一个apk实验后apktool b -f -p. xxx也不行,仍然报资源错误看了一下可能是鹅厂出的AndResGuard工具,会将资源文件夹/Res/xxx重命名为/r/x类的目录,导致资源解析出错针对这个混淆有shakaApktool来对抗,但由于太久没有更新所以已经失修了于是无奈回归apktool -r不解析资源文件、原样打包的思路对于AndroidManifest.xml的二...原创 2019-07-06 17:55:31 · 24074 阅读 · 3 评论 -
190702 安卓-Frida-gadget
开始鹅厂实习的社畜搬砖生活(°∀°)ノfrida-gadget的优势在于通过对应用重打包,加入gadget.so的调用,从而实现frida的hook这种途径避免了注入所需要的root权限发现了一个现成的脚本,但测了一下似乎有一些问题,明天修一下看看以下是手动流程解包apktool d xxx.apk-r选项可以使得不解析资源,但AndroidManifest.xml也不会解析,此时无...原创 2019-07-02 23:43:24 · 26497 阅读 · 5 评论 -
190409 逆向-RCTF2015(FlagSystem)
想起来前段时间搞了JEB3的泄露版,找了个安卓题来试试手结果发现这题目也挺有意思的23333提供的题目文件是一个二进制,十六进制查看器发现头部标着ANDROID BACKUP,显然就是个应用的备份文件了查了一下可以通过abe.jar来解包,试了一下发现解出来的文件是乱码,毫无标志于是找了一下文件解析,发现第三行为压缩标志位,源文件为0表示未压缩,于是将它改成1,再次解包,得到两个应用看...原创 2019-04-09 00:54:38 · 22140 阅读 · 1 评论 -
181124 逆向-2018“柏鹭杯”厦大邀请赛初赛(Re1、2)
总体来说逆向的题目质量挺高~感觉学到了不少东西=-=就是第三题放题时间有点晚233没有公网的情况下做题难度确实比较大欢迎各位师傅交流~Re1JAVA层用JEB查看反编译代码,JAVA层做了如下操作有点绕,不知道是出题人故意还是无意地,这个处理写的很蛋疼除了上述列出的字符以外都是保留不变的output的范围是彼此分开的,因此可以写出该处理的反函数def decode(x): ...原创 2018-11-24 22:32:38 · 2415 阅读 · 1 评论 -
181007 安卓-构建数据库
安卓自带一个Sqlite数据库,但是我对sql不是很熟~毕竟不会开发不会web的逆向菜狗233正好看到书上有讲Litepal这个方便的工具,部署也超级简单,就实践了一下Litepal方便之处在于可以将数据库的记录与Java对象建立映射,通过Bean类来快捷地操作记录首先在build.gradle里的dependencies加上compile 'org.litepal.android:core...原创 2018-10-08 02:00:02 · 305 阅读 · 0 评论 -
181006 安卓-爬取数据
准备用课程表作为练手的项目~在搞最棘手的界面之前,先实现自动爬取教务系统的代码吧数据爬取最简单的就是直接通过Http连接拿到html,然后通过正则拿到分组数据不过搜索的时候发现Java下还有个jsoup更加方便:可以直接按照html的节点进行数据提取最常用的的是jsoup.connect(url).cookies(cookies).data(data).post()但是发现爬出来的总是有...原创 2018-10-06 23:08:18 · 849 阅读 · 0 评论 -
181005 安卓-Activity(菜单和活动间穿梭)
四大组件中的活动(Activity)类比到Windows中的话,也许Activity比较接近于浏览器中的页面每个“视觉窗口”都是一个Activity,都相当于一个新的页面,具备各自的控件、函数事件等等菜单在/res/menu/main.xml中创建布局和各个Item的控件每个item用如下格式被包含在menu中<item android:id="@+id/add_item" ...原创 2018-10-05 02:52:57 · 327 阅读 · 0 评论 -
180903 安卓-逆向经验(注解和Bean类)
今天的逆向中遇到了一些对只会线性编程的我来说比较神奇的操作 只是简单地了解过一些入门级的Java语法,越逆大型的工程化的APP就越觉得Java很神奇今天学到的是 通过对类做注解,可以直接将对象存入数据库中 使用Convert注解声明转换方法,具体的流程是通过gson将对象序列化成json,然后以字符串形式存入数据库中。取出时同样将json反序列化成对象使用 使用注解以后,对象可以直接像...原创 2018-09-04 01:06:32 · 592 阅读 · 0 评论 -
180931 安卓-adb backup的利用
之前看到过当apk中忘记将allowBackup=”true”删掉或者改成”false”时,会产生一个相当于文件dump的漏洞,而且无需root权限基本上也算老生常谈了,这个权限引发的问题应该很久了 利用方法是通过”adb backup”指令将应用数据备份出来,然后一方面可以在PC端进行解包分析数据,另一方面可以直接restore到别的机器上,造成“一些有缓存的应用无需登录即可盗用他人账号”...原创 2018-09-02 13:18:22 · 3500 阅读 · 0 评论 -
180712 安卓-入门
安卓逆向反编译Apk结构classes.dex java层的主要代码,即主程序META-INF 签名和证书相关文件lib native层的动态链接库文件(.so)目录,按照CPU架构作为子目录存放不同的soassets 打包的静态文件,通常存放需要读取的图片、加密代码等等res 资源目录AndroidManifest.xml 配置文件,默认状态为编译后的二进...原创 2018-07-12 23:35:48 · 478 阅读 · 2 评论 -
180723 安卓-run-as命令
run-as命令功能以root身份运行命令,可以在未root的情况下查看某个(debug模式的)应用的内部信息(沙盒文件夹)介绍在没有root过的手机中,用户权限是无法查看很多信息的,包括各个应用的沙盒而run-as就向开发者提供了未root情况下访问沙盒信息的权限执行run-as + 包名,就可以直接以root权限进入该应用的沙盒中查看包括数据库、xml、各种信息文件...原创 2018-07-24 01:37:26 · 4846 阅读 · 0 评论 -
180124 逆向-XMAN结营赛(前方高能)
1625-5 王子昂 总结《2018年1月24日》 【连续第481天总结】 A. 结营赛前方高能WP B.前方高能XMAN第七组WriteUp 说实话好像确实有点难,不过逻辑链条很完整,是中规中矩的逆向题。就是内容有点太多了2333有兴趣的可以再自己做做,都是我觉得挺有意思的题型 没人做到真正的部分让我们挺失落的qvq qvqNDK的C不支持内联x86汇编,动态解密部分可是我辛原创 2018-01-25 08:47:43 · 768 阅读 · 0 评论 -
180123 逆向-Xman结营赛(xkey、若隐若现)
1625-5 王子昂 总结《2018年1月23日》 【连续第480天总结】 A. 结营赛xkey、若隐若现 B.xkey在被DecodeMe绕的晕头转向以后无奈换了一个题目做,简单明了地把onclick摆在脸上、调用JNI方法真是让我感动的不行一安装就因为模拟器的API版本过低,报错了╮(╯_╰)╭只好Patch掉MiniApi再重打包上来能看到反调AntiDebug和签原创 2018-01-24 01:13:58 · 562 阅读 · 0 评论 -
180107 逆向-Xman移动安全冬令营选拔赛
1625-5 王子昂 总结《2018年1月7日》 【连续第464天总结】 A. Xman移动安全冬令营选拔赛 B. 搞完领航杯马不停蹄回来搞移动逆向,感谢主办方延长了时间~ 逆向类的题目很有意思(°∀°)ノ 脑洞/杂项类的就……(跪返老还童反编译查看java代码,发现调用了一个WebView,加载了包内的check_flag.html 解包拿出来,查看发现存在混淆的js代码原创 2018-01-07 20:37:46 · 934 阅读 · 1 评论 -
180104 逆向-DebugMe(3)&ARM调用约定
1625-5 王子昂 总结《2018年1月4日》 【连续第461天总结】 A. ARM调用约定 B. ARM汇编中规定:R0-R3这4个寄存器用来传递函数调用的第1到第4个参数,超出的参数通过堆栈来传递。R0寄存器同时用来存放函数调用的返回值。被调用的函数在返回前无需恢复这些寄存器的内容。知道这一点就可以回头去搞DebugMe那里IDA解析错误的函数了先回忆一下该函数:原创 2018-01-05 11:41:01 · 620 阅读 · 0 评论 -
180115 逆向-安卓绕过第三方模块(某易验证码)(2)
1625-5 王子昂 总结《2018年1月15日》 【连续第472天总结】 A. 某易滑块验证码绕过 (2) B. 继续昨天的逆向之前说到业务逻辑是SDK将结果返回给原APK后,调用了一个ShieldEvent 跟过去发现只是一个简单的包装类 第一次看到的时候懵逼了,也不知道return 逻辑值到哪去了 后来搞完了想起来,可以查看交叉引用啊~一下就锁定了register原创 2018-01-15 14:57:09 · 1441 阅读 · 0 评论 -
180114 逆向-安卓绕过第三方模块(某易验证码)
1625-5 王子昂 总结《2018年1月14日》 【连续第471天总结】 A. 某易滑块验证码绕过 B. 因为某些原因,需要考虑绕过APK上的这玩意儿~ 最先想到的是按键精灵模拟操作,稍微查了一下发现python貌似有现成的模块,但是对于原本为按键精灵的脚本来说不太方便 如果重写识别的话,还需要再研究一下原理~最简单的方法就是直接对APK逆向,猜测流程如下Created with Ra原创 2018-01-15 02:09:52 · 1567 阅读 · 0 评论 -
171226 逆向-JarvisOJ(APK_500)
1625-5 王子昂 总结《2017年12月26日》 【连续第452天总结】 A. JarvisOJ-APK_500 B. 跟之前的APK300-DebugMe如出一辙 一大堆反调试,字符串都进行了加密,通过异或动态解密来操作DebugMe主要的坑点在于IDA把函数的返回值识别错误了,ARM并没看懂,其他还好这个500的坑点就比较多了.. 首先用Apktool和改之理都报Android原创 2017-12-27 01:17:59 · 547 阅读 · 0 评论 -
171122 逆向-ARM汇编基础(1)
1625-5 王子昂 总结《2017年11月22日》 【连续第418天总结】 A. ARM汇编基础 B.ARM家族整个ARM处理器家族分成Classic, Embedded, Application三大类 其中Classic从ARM11之后开始用Cortex来命名,又分为Cortex-A, Cortex-M, Cortex-R Corex-A系列的处理器广泛引用于智能手机、上网本、电子书和原创 2017-11-28 00:16:25 · 395 阅读 · 0 评论 -
171121 逆向-静态分析安卓(特殊类)
1625-5 王子昂 总结《2017年11月21日》 【连续第417天总结】 A. 静态分析安卓程序-Android程序中的特殊类 B.内部类Java语言允许在一个类的内部定义另一个类,这种在类中定义的类被称为内部类。内部类可分为成员内部类、静态嵌套类、方法内部类、匿名内部类。 内部类也会生成独立的smali文件,命名方式为外部类$内部类.smali内部类中存在一种实例字段thisx(如t原创 2017-11-27 00:07:56 · 247 阅读 · 0 评论 -
171120 逆向-静态分析安卓(Smali文件格式)
1625-5 王子昂 总结《2017年11月20日》 【连续第416天总结】 A. 静态分析安卓程序-Smali格式 B.Smali文件格式Smali文件的头3行描述了当前类的一些信息,格式如下:.class <访问权限>[修饰关键字] <类名>.super <父类名>.source <源文件名>第一行指定了当前类的类名 第二行指定了当前类的父类 第三行指定了当前类的源文件名 PS:原创 2017-11-25 00:18:51 · 393 阅读 · 0 评论 -
171219 JarvisOJ(DebugMe)(1)
1625-5 王子昂 总结《2017年12月19日》 【连续第445天总结】 A. JarvisOJ-DebugMe B. JarvisOJ上的题…真是让人痛苦又快乐着,每题都挺难的,但是又能学到不少东西,但是WP难找真让人头疼OTZ强迫自己学习呀这是拖入IDA反编译,发现是Elf的动态链接库 所以动态调试就比较麻烦了(:з」∠)还要自己写个程序加载它main函数很直接,要求有2个参数原创 2017-12-20 00:45:13 · 438 阅读 · 0 评论 -
180117 逆向-Android系统架构理论
1625-5 王子昂 总结《2018年1月17日》 【连续第474天总结】 A. Android架构 B. Android原生系统Android系统架构内核层Linux内核服务实现硬件设备驱动,从而为上层提供诸如进程与内存管理、网络协议栈、电源管理以及驱动模型硬件抽象层对硬件设备的抽象和封装,为安卓在不同硬件设备提供统一的访问接口运行库系统库通过Android应用程序框架层为开发者提供服务:A原创 2018-01-17 22:27:29 · 444 阅读 · 0 评论