抖音数据采集教程,unicorn 解决 OLLVM 字符串混淆通用方法
短视频、直播数据实时采集接口,请查看文档: TiToData
免责声明:本文档仅供学习与参考,请勿用于非法用途!否则一切后果自负。
虽然是通用方法,但是要了解 so 加载流程、汇编基础、java基础才可以使用哦~
这里用的基于 unicorn 的 androidEmu
AndroidNativeEmu 在面对没有加壳的 so 还是挺好用的,不过遇到加壳的 so,就会力不从心的,需要 dbg 才行。
解决字符串混淆思路,其实和 frida 读取混淆字符串方法一样,在内存中字符串是被解密状态的,所以在内存中拿就可以了, 而且 Unicorn
提供了 unicorn.UC_HOOK_MEM_WRITE
来 hook 操作内存中的数据
干货代码如下:
import loggingimport sysimport osimport unicornimport structfrom androidemu.emulator import Emulatorsys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))logging.basicConfig( stream=sys.stdout, level=logging.DEBUG, format="%(asctime)s %(levelname)7s %(name)34s | %(message)s")logger = logging.getLogger(__name__)emulator = Emulator(vfp_inst_set=True) # 初始化模拟器# 字符串解密so_file = "test/test.so"modify_map = {} # 接收字典def UC_HOOK_MEM_WRITE(mu, _type, address, size, _value, user_data): byte_array = struct.pack(".........