
SO逆向实战十三篇
文章平均质量分 79
白龙~
这个作者很懒,什么都没留下…
展开
-
【无标题】
Android Native 字符串解密原创 2023-02-17 14:46:34 · 7475 阅读 · 5 评论 -
Unidbg杂谈
Unidbg的功能可以分成两大块模拟执行辅助算法还原模拟执行的所有任务,一言以蔽之,就是补环境,补环境并不是一件容易的事,我总结一下常见情况。首先是JNI这个桥梁相关的补环境问题1.样本存在初始化函数,研究者没有意识到这个问题就会出大问题(好吧我是废话大王),参考资料:《csdn 样本七》 https://blog.youkuaiyun.com/qq_38851536/article/details/118000259知识星球 《Unidbg初始化》目前的五节视频2.MethodID问题原创 2021-09-14 14:02:31 · 5962 阅读 · 2 评论 -
Unidbg系列总结
关于Unidbg基础内容的介绍基本全面了,个人感觉这系列文章还是不错der。后续的绝大多数文章、视频放知识星球和课程中,课程之后出,因为感觉现在能力害欠缺。知识星球现在就可以加了,知识星球主打基于Unidbg的模拟执行与算法还原。内容主要来自三部分现有内容的重新制作,不少人反映”可以更仔细一些“,说实话,不少文章都有前置知识和基础要求,所以系列文章会再精心的重新制作,以文章或者视频的方式和大家在知识星球再次见面不断更新的新文章,以SO层实战为主题,每周一篇左右,质量不低于这一系列文章,我们的目标是原创 2021-07-24 17:23:15 · 6166 阅读 · 4 评论 -
SO逆向入门实战教程十:SimpleSign
一、前言这是系列的第十篇,通过该样本可以充分学习如何在Unidbg中补充环境。朋友zh3nu11和我共同完成了这篇内容,感谢。二、准备首先我们发现了init函数,它应该就是SO的初始化函数,其余的函数看名字也都很易懂。三、Init 模拟执行我们首先用Unidbg跑通Init初始化函数,先搭建基本框架package com.article10;import com.github.unidbg.AndroidEmulator;import com.github.unidbg.Module;原创 2021-07-01 20:34:35 · 7705 阅读 · 11 评论 -
为什么Unidbg模拟执行的结果和主动调用的结果不同(一)
一、前言前言打个广告,Unidbg有很多实操问题,文章说起来不直观而且费劲,最典型的就是怎么补JNI环境,很多朋友都补的又慢又折腾,欢迎大家私信了解七月的Unidbg课程,课程我主讲,而且由我的老板,逆向大牛R0ysue指导设计,大可放心。除此之外,建了一个Unidbg学习交流群,纯粹的技术交流,欢迎各位大佬来玩,私聊我拉进群。接下来进入正题,看文章标题大家也能猜到,这一篇的内容是一个新系列的开始,这并不意味着《逆向十三篇》结束了,而是Unidbg模拟执行的结果和主动调用的结果不同这个问题太过重要了,原创 2021-06-29 14:53:05 · 5628 阅读 · 6 评论 -
一个Unidbg使用中遇到的奇怪问题
一、问题提出在《SO逆向入门实战教程七:main》我们讨论了一个样本,一位读者朋友给我提出了问题:有另一个同系的应用,也使用了样本SO,但是在其初始化函数中,流程略有不同,并会最终导致Unidbg在一个函数中死循环。样本和代码详见百度网盘二、问题解决我花了数个小时分析样本,依然找不到问题根源,但在无意的一次测试中发现,当使用HookZz对死循环发生的函数中某些位置inline hook时(无需修改任何内容),死循环就不复存在并恢复到正常执行流,并能顺利模拟执行。样本对Unidbg的检测吗?我认为概原创 2021-06-24 10:05:06 · 2954 阅读 · 2 评论 -
Unidbg参数传递时一个常见的坑
一、问题描述本篇描述一个常见且隐蔽的坑,新手很容易一头雾水。我写了个demo,里面包含两个方法。快来看看吧!JAVA代码package com.roysue.test623;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;原创 2021-06-23 12:08:01 · 6954 阅读 · 9 评论 -
Unidbg 问题汇总(一)
1.Long参数的传递假设一个native函数中参数是long类型,比如这样在编译成arm32的SO时,一定概率会被转成两个int.long a = 0x1000L → int a1 = 0,int a2 = 0x1000在Unidbg主动调用时,一定要记得处理,否则会出问题.这是一个常见问题,JAVA层传入的时间戳,常常就是jlong.处理办法有21是按照SO的情况,传给它两个int2是按照传入诸如 long tm= 1621265630L;的标准写法,Unidbg自动帮我们分割成两个原创 2021-06-22 23:50:59 · 5765 阅读 · 3 评论 -
SO逆向入门实战教程九——blackbox
文章目录一、前言二、准备三、Unidbg模拟执行四、Unidbg算法还原五、尾声一、前言上篇中,我们借AB之口,讨论了这样一个问题——Unidbg是否适合做算法分析的主力工具,这个问题没有标准答案,但我们会通过一系列样本探讨它,时间会证明一切。这一篇中,我们以Unidbg为主力工具去分析一个难度适宜的算法。坦白说,这篇的阅读体验不是特别好,原因来自两点:文章这种形式很难保证分析的连贯性这篇有前置知识要求视频的形式才是最好的,而且我也需要一份收入,如果有朋友同侪想报名我即将开课的Unidbg课程原创 2021-06-22 21:24:27 · 8029 阅读 · 15 评论 -
Unidbg适合做算法还原吗?(一)
Unidbg是模拟执行的强大工具,这是毋庸置疑的,可是,它在算法还原上是否依然是得力的助手?或者说,当我们想要对一个样本进行算法还原而非模拟执行呢,需要关注Unidbg吗?我们看一下AB两人的辩论,他俩会进行数篇的辩论,客官也可展开思考,发表和交流看法。A:Unidbg在算法模拟执行上很有用,但算法还原上用它纯属画蛇添足。B:为什么这么觉得?A:先看第一种情况——目标SO比较简单,这种情况下,IDA中静态分析样本,再Frida Hook一下样本中主要的函数,就能七七八八明白逻辑了,何苦在Unidbg原创 2021-06-20 19:42:50 · 5556 阅读 · 10 评论 -
SO逆向入门实战教程八:文件读写
文章目录一、前言二、demo1设计三、Unidbg模拟执行demo1四、demo2设计五、Unidbg模拟执行demo2六、尾声一、前言本篇分析的是自写demo,帮助大家熟悉Unidbg中对文件读写的处理,例子中主要涉及Sharedpreference 读写Assets 读写文件 读写二、demo1设计Sharedpreferences是Android平台上常用的存储方式,用来保存应用程序的各种配置信息,其本质是一个以“键-值”对的方式保存数据的xml文件,其文件保存在/data/dat原创 2021-06-18 13:33:19 · 4952 阅读 · 11 评论 -
SO逆向入门实战教程七:main
一、前言一个较好的综合性样本。本篇抛砖引玉分析一下。二、准备这是我们的目标方法参数1是203参数2是一个对象数组9b69f861-e054-4bc4-9daf-d36ae205ed3e (String)GET /aggroup/homepage/display __xxxxx(byte数组形式)2 (int包装类)三、Unidbg模拟执行首先搭一个架子package com.lession10;import com.github.unidbg.linux.android.dv原创 2021-06-17 19:33:48 · 10209 阅读 · 23 评论 -
SO逆向入门实战教程六:s
文章目录一、前言二、准备三、Undibg模拟执行四、算法还原五、尾声一、前言第六篇,主要内容是简单JAVA环境的填补。二、准备如图红框是我们的目标函数,入参是sortedMap接口的实现类对象,比如TreeMap对象,返回值是SignedQuery类对象。参数和返回值都比较特殊,不是我们前面处理过的基本类型和对象,所以举个例子,这是Frida 的callSign代码// Call Sign 函数function callsign() { Java.perform(function.原创 2021-06-15 14:41:56 · 7954 阅读 · 17 评论 -
当我们谈论Unidbg时我们在谈什么
文章目录一、前言二、使用Unidbg的工作量是什么三、补环境补的是什么3.1 运行环境缺失3.2 上下文缺失四、Unidbg 不是所有情况下最优的解决方案五、Unidbg在大多数情况下是好的方案六、Unidbg和风控无关七、尾声一、前言这是一篇漫谈Unidbg的文章,我对Unidbg的使用和理解都还很浅,日后会更新或修改看法,欢迎大佬指点,也期待同侪讨论。二、使用Unidbg的工作量是什么我们常规使用Frida + IDA的动静态分析中,工作可能是这样的找线索→Frida Hook验证→验证成功继原创 2021-06-15 10:01:24 · 5282 阅读 · 10 评论 -
SO逆向入门实战教程五:qxs
文章目录一、前言二、准备三、Unidbg模拟执行四、算法还原五、尾声一、前言久违了,这是SO逆向实战教程的第五篇,最近忙于即将开讲的Unidbg课程内容的设计,所以疏忽了博客的更新,这篇的重点是一个MD5的炫技操作,需要对哈希算法原理有较深理解,本篇中不讲算法原理(可以自己看文档,或者看我在SO基础课里对MD5算法的手算),不懂算法原理的话,看起来一头雾水。侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg原创 2021-06-11 23:41:32 · 7833 阅读 · 21 评论 -
SO逆向入门实战教程四:mfw
文章目录一、前言二、准备三、Unidbg模拟执行四、算法还原五、尾声一、前言这是SO逆向入门实战教程的第四篇,上篇的重心是Unidbg的补环境以及哈希算法的简单魔改,本篇的重点是使用Unidbg中对魔改程度较深的加密算法进行分析。侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg Hook + IDA 的路线。主打入门,但并不限于入门,你会在样本里看到有浅有深的魔改加密算法、以及OLLVM、SO对抗等内容原创 2021-06-04 10:01:33 · 7633 阅读 · 12 评论 -
SO逆向入门实战教程三:V2-Sign
文章目录一、前言二、准备三、Unidbg模拟执行四、算法还原五、尾声一、前言这是SO逆向入门实战教程的第三篇,上篇的重心是Unidbg的Hook使用,本篇的重点是如何在Unidbg中补齐JAVA环境以及哈希算法的魔改。侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg Hook + IDA 的路线。主打入门,但并不限于入门,你会在样本里看到有浅有深的魔改加密算法、以及OLLVM、SO对抗等内容。对样本.原创 2021-06-03 20:19:18 · 11429 阅读 · 27 评论 -
SO逆向入门实战教程一:OASIS
文章目录一、前言二、准备三、Unidbg模拟执行四、ExAndroidNativeEmu 模拟执行五、算法分析六、尾声一、前言这是SO逆向入门实战教程的第一篇,总共会有十三篇,十三个实战。有以下几个注意点:主打入门级的实战,适合有一定基础但缺少实战的朋友(了解JNI,也上过一些Native层逆向的课,但感觉实战匮乏,想要壮壮胆,入入门)。侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg Hook + .原创 2021-05-31 16:03:19 · 21807 阅读 · 30 评论