-
-
[原创]记使用Trace还原ollvm混淆的函数 #30天写作挑战#
-
发表于:
2020-9-1 20:02
28826
-
[原创]记使用Trace还原ollvm混淆的函数 #30天写作挑战#
https://bbs.pediy.com/thread-260650.htm
https://bbs.pediy.com/thread-260655.htm
二位大佬的两种解题思路,膜拜膜拜
ollvm可以使用ida的trace功能辅助还原,看到样本上手尝试一下。
上面的帖子中有部分使用trace进行辅助还原,这篇帖子是通过trace后的汇编指令进行的ollvm还原过程,记录分享一下过程,不喜勿喷。
调试器将为每条指令保存所有修改后的寄存器值。
https://www.hex-rays.com/products/ida/support/idadoc/1446.shtml
调试器将保存到达临时基本块断点的所有地址。
https://www.hex-rays.com/products/ida/support/idadoc/1628.shtml
调试器将保存发生函数调用或函数返回的所有地址。
https://www.hex-rays.com/products/ida/support/idadoc/1447.shtml
定位过程可以参考上面2个帖子
结果显示:
参数:
结果:
trace后的cfg,变黄色就是执行的汇编指令被trace过
sub_13CE4中调用了sub_13808和sub_172D0
参数1 pediy_imyang_lXcaTALmow
对应trace文件
以 0x0000000000000070看一下具体处理
参数1 中的 0x70 -> 0x51,是通过如下进行的查询0x70的位置是0x51
最终结果为
参数1
加密后
参数3 www.pediy.com&kanxue
trace文件中参数3只用了16个字符进行后续的处理
这里的处理和参数1处理的方式相同
参数3
加密后
使用参数1加密后的字节和参数3加密后的字节进行计算加密生成结果
拼接结果
A4B8B6C8 9EB47F4F 29B44D47 C7382F85
和结果对比
797903090001 a4b8b6c8 9eb47f4f 29b44d47 c7382f85 1ad57618 f9b820c5 d55298cb 5f941c8c
根据以上的分析可以得到算法如下:
参数1加密后字节
参数3加密字节
以图一为例,计算如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-9-2 09:43
被neilwu编辑
,原因: