

[编程] Android libsu 改造对NativeBridge进行支持
前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 需求背景前段时间搞一个东西用到了libsu,不得不说用起来还是挺舒服的,直接代码全在一个Project里,然后只需要关心业务,不用管底层的实现,很方便。 后来在模拟器上跑发现跑不起来,情景就是APK没有提供x86_64的so的情况下在root进程(RootService)中去加载arm64-v8a的so,然后因为不同架构所以会加载失败,这个时候去调用so的接口就会寄掉,因为没有实现嘛。 当然能提供x86_64的so最好,但是有些情况提供不了,比如我的情况就是用了Paddle Lite库,然后按照官方原话这个库仅支持arm64-v8a,说是搞了很多优化,所以没得办法。 于是就产生了魔改libsu的想法。 项目地址和使用方法libsu-nativeb..
更多

[编程] Android app_process 启动进程强行开启NativeBridge支持
前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 原理app_process部分启动流程 这里我们重点关注ParsedOptions这个处理启动参数的函数,基本上能调整的参数都在这里。 我们往下找,发现有两个与NativeBridge相关的参数,一个是-XX:NativeBridge,一个是-Xforce-nb-testing。 .Define("-XX:NativeBridge=_") .WithType<std::string>() .IntoKey(M::NativeBridge) .Define("-Xzygote-max-boot-retry=_") .WithType<unsigned int>(..
更多

[编程] 搭建本地NPM仓库与基本使用
前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 准备工作安装 verdaccio npm install --global verdaccio。 启动 verdaccio verdaccio。 启动之后Ctrl + C停止服务。 然后把config.yaml给复制到我们的目录下,再把它生成的配置全删了。 copy "C:\Users\YourName\AppData\Roaming\verdaccio\config.yaml" . rmdir "C:\Users\YourName\AppData\Roaming\verdaccio" A 再次启动 verdaccio verdaccio,看到配置变成我们的目录就OK了。 仓库保存为了方便部署,..
更多

[编程] IL2Cpp游戏逆向之如何通过关键数据反向查找所在的类与字段名(关键数据定位)
前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 工具 Frida Unity 需求分析来假设一种情况,虽然你已经成功得到了游戏的dump.cs,但是由于这个游戏使用了编译期符号混淆,所以你得到的东西可参考性非常的差,甚至不知道从哪里入手。 那么这个时候我们其实可以先使用内存搜索工具在游戏中找出关键的数据,然后根据IL2Cpp的结构,反向推理出该数据所在的是哪个类里和对应的字段名。 得到了类与字段名、命名空间、偏移这些信息之后我们再回到对应的dump.cs中就有了一个关键的入口点,很多时候可以节省效率和作为一种对抗混淆的手段。 创建并生成测试用游戏为了易于理解和方便分析,我们这里先用Unity创建一个专门用来测试的游戏。 创建并配置Unity项目 打开Unity并创建一个新项目。 在GameOb..
更多

[演示] 使用Github Pages配置Android6.0 Termux旧仓库(官方不再维护)
纯纯的白嫖! 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 资源 Github Pages Termux app and packages for legacy Android OS Apktool 介绍Github Pages的基本使用就不介绍了,如果还不知道的话建议先阅读一下官方文档。 这里只说几个需要的关注点 创建站点前得先创建一个站点仓库,即以xxx.github.io为名字的仓库,具体可看这里。 每个站点的仓库大小限制为1GB(官方推荐),但是实测最大限制为1.49GB,不超过这个限制没啥问题,超过的话会上传失败。 如果你其他的仓库启用了Github Pages,则它对应的访问路径为xxx.github.io/仓库名,区分大小写。 搭建假设你已经有了站点仓库(以xxx.gith..
更多

[编程] 使用C++20实现异步任务与单/多线程的协程调度器
对C++ Coroutine feature的后续展开。 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 工具 Visual Studio Code 基本介绍协程这玩意我觉得其实没必要多做什么介绍,现在流行的语言基本上都有这玩意,网上也有很多相关的文章。如果你还没听过的话我觉得你可以先谷歌或百度查查相关资料。 从C++推出协程特性都已经两年了。虽说刚出的时候就造了个异步任务的轮子,不过一直没什么机会用,后来也就扔一边了。 最近想起又拿出来试了试,发现有点难用。加上我想写篇文章记录一下一些设计思路,索性就直接重构了一下,并增加一些新的功能。 进入正题,因为本期代码比较长所以本文中应该不会出现完整的代码,只会把基本写法和一些关键的设计部分拿出来解释说明。 至于完整的代码实现与简单测试都已上传至我..
更多

[编程] 论C++"新语法"-finally如何实现
好用滴很! 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 工具 Visual Studio Code 需求分析先放一段代码我们来看一下实际操作时可能会遇到的一些场景,并分析为什么我们会需要finally语法。 上代码 #include <WinSock2.h> #include <Windows.h> #include <iostream> std::string lastErrorMessage(int code = 0) { if (0 == code) code = ::WSAGetLastError(); std::string result(1024, 0); auto size = ::F..
更多

[逆向] 米游社原神每日签到之DS算法
漏签真的很烦。 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 工具 Fiddler JADX IDA Frida 抓包 重放测试使用Shift + R进行一个包的重放。 没有问题,这其中有个DS参数看起来挺可疑的,去掉再试试。 服务器直接不认了,那么可以确定这就是个时间戳签名信息。 JADX将apk拖进jadx并等待分析完成后打开搜索窗口直接搜索DS关键字 然后啥也没搜到,那么换个"DS"关键字 看到几个可疑的目标,比如这个圈起来的类名就叫做GetDSMethodImpl,可以说非常的直接,那么跟过去看看 经过分析代码后,发现DS来自与这个函数,继续跟过去看看 可以看到到这里就已经进入了so层了,那么接下来进入下一层的分析。 IDA全部的伪代码比较长,我就截取..
更多

[编程] 反Frida检测与禁止SSLPinning的一些思路和方法
抛砖引玉。 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 工具 Visual Studio Code Frida 简要介绍Frida官方解释: It’s Greasemonkey for native apps, or, put in more technical terms, it’s a dynamic code instrumentation toolkit. It lets you inject snippets of JavaScript or your own library into native apps on Windows, macOS, GNU/Linux, iOS, Android, and QNX. Frida also provides you wit..
更多

[项目] Taskcloud基本重构完成与后续填坑记录计划贴
记录以防忘记。 前言本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。 项目地址本文只做简要介绍,如果有兴趣还请移步主项目阅读README.md。 主项目https://github.com/Bzi-Han/taskcloud 子项目前端 vue3 https://github.com/Bzi-Han/taskcloud_web 后端 java https://github.com/Bzi-Han/taskcloud_backend 核心 c++ https://github.com/Bzi-Han/taskcloud_core 基本介绍云任务是一套定时任务处理程序,用户通过与前端交互添加需要执行的任务到指定的任务包中,并设定任务包的激活状态与定时启动时间(可设定是否只运行一次或每天都运行)。除了用户手..
更多