夏洛魂

逆向分析

Unidbg生产环境部署

Unidbg
Unidbg可以模拟执行so的方法,对于爬虫工程师来说,需要每次调用加密算法获取结果并添加到请求中获取最终的数据,故我们需要一个算法服务器来实现上述需求.

初识Spring Boot

Spring:创建微服务应用程序的框架,比如我们常见的Web应用服务.

Unidbg补环境实战

Unidbg

Unidbg的作用是模拟执行so中的函数,处于Native层.而Java层的函数可以通过JNI调用Native层函数,那么Native层也可以通过JNI去调用Java层的函数.

在Native层调用Java层函数的时候,因为Unidbg中没有这些函数的实现,模拟执行必然失败.故我们需要在Unidbg中补充这些Java层函数,让Native层的函数去调用.

Android So-加载、链接、初始化流程

初探Linker

当我们使用Android Studio进行NDK开发时,先在Java类中编写native方法的声明,之后在cpp文件中编写相应函数的实现,最后根据CMakeLists.txt将cpp代码编译为so,并在Java类中使用System.loadLibrary方法将Apk安装包中lib目录下相应架构的so文件载入内存.那该方法如何将so文件载入内存? 这需要我们深入源码来探究它内部的代码逻辑.

进入Unidbg的世界

概述

Unidbg是一个基于Unicorn的逆向工具,可以黑盒调用Android和iOS中的so文件.这使逆向人员无须了解so内部算法原理,只需主动调用so中的函数,传入所需的参数,补全运行所需的环境,即可得到需要的结果.

X64Dbg之SearchAndReplaceMem

在编写x64Dbg插件时用到以下两个函数,有坑!

1
2
SCRIPT_EXPORT duint FindMem(duint start, duint size, const char* pattern);
SCRIPT_EXPORT bool SearchAndReplaceMem(duint start, duint size, const char* searchpattern, const char* replacepattern);

首先SearchAndReplaceMem只会在start开始的size大小范围内只替换一次,所以要结合FindMem来完成全部的替换.

0%