-
一面过了,开心!
要好好准备二面!!!
-
今天被问到了一个问题,先记录以下,后面遇到相应样本就去学。
怎么分析go编写的so?参考帖子:GoJni 协议加解密分析 - 知乎
基础:https://bbs.kanxue.com/thread-263921.htm
实例:https://bbs.kanxue.com/thread-264344.htm
初略看了下,
应该是需要注意go符号、字符串格式、调用约定这些,后面遇到了就分析一下,做个流程记录。差异还是挺大的!!关于go符号,有点像flutter,也是有dart符号问题,需要借助blutter还原符号。
当然还可能有其他问题,遇到了再解决,学了很久不用就会忘记。遇到了再做一个完整流程记录!
-
最近面试,会问一些风控相关的,之前协议分析都是遇见检测对抗这些,但是不太全面深入,最近打算系统深入一下这个方向。
大致打算从以下几个方向着手:
设备指纹:唯一标识设备,主要关注需要采集哪些标识(Devices ID、蓝牙网卡等...)、如何采集(API、反射.等...)、如何存储等...
加固:主要是dex、so加固、资源完整性验证、apk签名,代码混淆、vmp等,hook 检测这些我打算放到环境检测部分
环境检测:检测运行环境(模拟器/真机)、root检测、hook 检测等...,这方面很庞大,而且需要深入各种框架原理、系统原理等。
之前做协议分析中,实际也会做一些相关的对抗,但是最近打算全面深入。先从设备指纹开始吧,然后是运行环境检测,最后再做加固吧。
加油!
-
这周学完LLVM控制流混淆课程,完成LLVM Pass编写。实现OLLVM基本功能控制流平坦化、虚假控制流、指令替换,还有常量替换和随机控制流。
先完成上面的功能,后面打算用LLVM Pass实现一个简单的VM混淆,刚好看见一种叫LightWeight VM的混淆,大致原理就是:将BasickBlock中每一条指令,都分解成一个新的单独的BasickBlock,然后分配一个单独的命令码(virtual opcode)。然后将这些命令码按照一定顺序存储起来,让PC通过命令码执行对应的BasicBlock。
-
有空就会整理笔记,陆陆续续发到博客上来的