编辑
2026-06-01
恶意代码分析实验报告
00

目录

实验八:熊猫烧香逆向分析
一、实验目的
二、实验内容
三、实验步骤
四、实验分析

实验八:熊猫烧香逆向分析

一、实验目的

  1. 掌握Delphi程序入口函数的汇编特征及寄存器传参机制(EAX、EDX、ECX),识别BSS段全局变量的作用。
  2. 深入逆向核心函数sub_403C98sub_405360,分析字符串拷贝逻辑与自定义异或解密算法的实现细节。
  3. 通过编写C++代码复现解密过程,验证异或与模运算在恶意代码中的应用,实现静态分析与动态调试的交叉验证。

二、实验内容

  1. Main函数流程逆向:利用IDA Pro定位程序入口,分析异常处理结构、栈帧构建及sub_403C98sub_405360等关键函数的调用链。
  2. 核心函数逻辑解析:详细分析字符串拷贝函数的寄存器传参规则及解密函数中异或、除法取余等汇编指令的具体实现。
  3. 算法复现与验证:提取密钥与密文数据,编写C++程序还原解密算法,并使用OD调试器监控内存数据的实时变化,验证分析结果。

三、实验步骤

步骤1:入口函数静态分析 使用IDA Pro加载“熊猫烧香”样本,跳转至0x0040CC28处的start函数。观察push ebpmov fs:[eax], esp指令,识别出Delphi程序的入口特征及SEH结构化异常处理安装代码。向下分析汇编代码,重点关注连续的call指令,确认参数传递方式:mov eax指向目标地址,mov edx指向源地址,mov ecx指向缓冲区。识别出程序先调用sub_403C98进行字符串准备,再调用sub_405360进行解密,最后通过sub_404018进行比对的自校验逻辑。

步骤2:数据段字符串解析 在IDA中双击交叉引用中提到的dword_40CC40地址,进入十六进制数据视图。选中数据块按下Alt+A,在弹出的选项中将字符串类型设置为C-style,编码格式选择GB2312。此时视图窗口成功解析出明文“”。同理,查看dword_40CC6C解析出作者备注信息。同时确认dword_40E7D4位于BSS段,初始状态为全0,是用于存储运行时字符串的全局变量。

步骤3:核心函数算法逆向 进入sub_403C98函数,分析其循环体,确认其为基于EAX(目标)、EDX(源)的标准字符串拷贝函数。重点进入sub_405360函数,定位到0x4053D1处的解密循环。识别关键指令:mov ecx, 0xA设置除数10,idiv ecx执行除法,xor edx, eax执行异或。结合寄存器变化,推导出算法逻辑:取出密钥xboy的字节,将其ASCII值对10取余,再与密文字节进行逐字节异或。提取参数:密钥位于EDX,密文位于EAX,输出缓冲区位于ECX。

步骤4:OD动态调试验证 启动OllyDbg加载样本,在call sub_403C98(地址0x0040CB7E)处设置断点。按F9运行程序断下后,在数据窗口跟随EAX寄存器(0040E7D4),观察到初始内存全为00。按下F8单步步过该函数,发现0040E7D4处已被写入明文字符串。继续运行至sub_405360调用后,检查ECX指向的栈内存,成功观察到解密后的汉字字符串,验证了静态分析的准确性。

步骤5:C++代码复现 根据逆向出的汇编逻辑编写C++代码。定义Decode函数,实现核心逻辑:byte xor_key = key[j % key_len]; pBuf[j-1] ^= xor_key % 10;。在主函数中定义原始密文数组"++戊+缓...",并传入密钥xboy进行调用。编译并运行该程序,控制台成功输出“”,完成了从汇编指令到高级语言算法的完整复现。

四、实验分析

实验结果 实验成功逆向分析了熊猫烧香样本的初始化流程。确认了程序严格遵循Delphi寄存器传参约定,利用sub_403C98将数据段的密文搬运至BSS段全局变量进行初始化。完整复现了sub_405360的解密算法,即利用密钥xboy的ASCII值模10后与密文进行逐字节异或。C++复现代码的运行结果与OD内存dump数据完全一致,成功还原出“武汉男生感染下载者”核心明文,验证了分析逻辑的正确性与严密性。

个人收获 通过本次综合实验,我深入理解了Delphi程序特有的结构化异常处理(SEH)及调用约定,有效提升了通过内存特征(如BSS段全零)定位关键数据结构的能力。在算法还原环节,我掌握了从汇编层面的算术与逻辑指令(IDIV、XOR)反推高级语言算法的方法,意识到恶意软件常使用简单异或加密来隐藏特征。这种“静态分析-算法推导-代码复现-动态验证”的闭环分析方法,极大地增强了我的逆向工程实战技能。

本文作者:Linxiong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!