竹笋

首页 » 问答 » 常识 » UnicornTrace还原Ollvm
TUhjnbcbe - 2022/7/17 16:55:00

使用unicorn来trace还原ollvm混淆的非标准算法

题目出自高研班W计划9月的题目还原ollvm混淆的自定义算法,点击文末左下角阅读原文,前往帖子下载附件。ollvm的自定义算法的还原一般就是意味着非常多的分支。我们可以F5打开后,逐步根据参数的传递,逐步的进行追踪,又或者是根据返回值,来逐层向来源追踪。如果这个算法是一个比较纯粹的算法,那么我们可以用unicorn来模拟执行这个代码段,并且打印所有的汇编指令每一行的变化,最后还原出这个算法。这个题目是一个比较纯粹的算法,这里我采用了unicorn来进行算法的恢复。做这个题目,我定制了一个专门用来trace指令详细变化的回调,可以直观的看到每行汇编指令当前的寄存器的数值和指令执行后的数值。unicorn相当于是一个cpu的模拟器,可以用来执行so中的代码段,一般不要直接使用apk中的so文件,直接使用是需要修复上下文的,这样会比较复杂。最好是直接从内存中直接dump一个so出来,然后就可以直接执行so里面的代码段,然后看一个例子ollvm9.apk。最终trace出来的成品demo:
1
查看完整版本: UnicornTrace还原Ollvm