熊猫烧香(下)病毒释放过程
1、loc_408171
第一步 打开IDA Pro和OD载入病毒样本
打开OD转到00408171 按下F2增加断点,运行到这个地方
思考:OD重新打开断点为什么还保留着?
在OllyDbg中,它会把所有与程序后模块相关的信息保存在单独的文件中,以便在模块重新加载时继续使用。这些信息包括标签、注释、断点、监视、分析数据、条件等。
第二步,在OD中分析0x00408171位置。
首先是一个CMP比较操作(Compare),接着查看EBP-0x8的内容。
- 0x00408171 cmp dword ptr ss:[ebp-0x8], 0x0
我们可以看到它内容是0,它的比较对象也是0
第三步,分析JNZ跳转指令。
接着按下F8,可以看到比较后,ZF变成了1。由于二者都为0,所以在比较过后ZF=1,那么接下来的跳转并不执行,继续执行下面的内容。
JNZ 0x004082F0 JNZ(jump if not zero)结果不为零则转移,即z=1时跳转,但是z=1时,zf=0。故JNZ跳转的条件也是零标志位zf=0,由于指令执行的结果为0,此时的ZF值为1,故不执行跳转 CF(进位标志)=1:算术操作最高位产生了进位或借位,=0 最高位无进位或借位 ; PF(奇偶标志)=1:数据最低8位中1的个数为偶数, =0 数据最低8位中1的个数为奇数; AF(辅助进位标志)=1:D3→D4位产生了进位或借位, =0 D3→D4位无进位或借位; ZF(零标志)=1:操作结果为0, =0 结果不为0; SF(符号标志)=1:结果最高位为1,=0 结果最高位为0; OF(溢出标志)=1:此次运算发生了溢出, =0 无溢出。
在这里插入图片描述
第四步,分析函数sub_40532C。
在IDA中继续查看代码内容。
C:\Users\14551\Desktop\setup.exe
接下来将EDP-0x3D4赋值给EDX,F8执行并在数据窗口中跟随,发现它此时还是空值。
进入函数
发现该函数的主要功能是API函数CharUpperBuffA。
- CharUpperBuffA函数作用:把缓冲区中指定数目的字符转换成大写字母
总结,重命名及对应功能如下:
- sub_40532C -> CharToUpper
- 功能:缓冲区中指定数目的字符转换成大写字母