ReFormat:加密消息的自动逆向工程
1. 阶段分析器
阶段分析器分为两个步骤来计算算术和按位操作的百分比:
- 步骤一 :计算收集的基于 shttpd 的执行跟踪中算术和按位操作的累积百分比。
- 步骤二 :计算搜索范围内算术和按位操作的逐片段百分比。
通过给定的阈值,确定 sha1_block_asm_data_order 函数的最后一次调用为过渡函数,这与对 shttpd 源代码的手动分析一致。在示例中,超过 99% 的算术指令和超过 90% 的按位指令实际上发生在消息解密阶段。
2. 数据生命周期分析器
在确定消息解密阶段和正常协议处理阶段后,下一步是定位包含解密消息的内存缓冲区。基本思路是识别从消息解密阶段传递到正常协议处理阶段的缓冲区,这些缓冲区必须在前者阶段写入,在后者阶段读取。
为了识别这些缓冲区,需要分析内存缓冲区的生命周期,具体步骤如下:
1. 定义内存缓冲区的活跃度 :
- 应用程序启动时,将为全局变量预分配的所有缓冲区标记为活动。
- 在消息解密阶段,在堆或栈中分配缓冲区后,将其标记为活动;当活动缓冲区从堆或栈中释放时,清除其“活动”标记,使其无效。
- 应用程序进入正常协议处理阶段后,缓冲区释放或访问(读或写操作)后,将其标记为无效。
2. 识别包含解密消息的内存缓冲区 :
- 搜索在消息解密阶段写入且在应用程序进入正常协议处理阶段时仍处于活动状态的
超级会员免费看
订阅专栏 解锁全文
746

被折叠的 条评论
为什么被折叠?



