Malware32

本文最后更新于:1 年前

一个UPX加壳的加密样本的逆向分析

虚拟机->操作系统:Windows10 Pro
1、使用PEID观察是否有壳 -> 有壳 UPX1

2、使用IDA32进行调试时UPX压缩 采用两种方法:1.在pusha执行后的esp中地址处下硬件断点 f9调试 此时到达可跳转进主函数入口处 2.寻找pusha对应的popa 下方最近的jmp一般为主函数入口

3、使用UPX软件进行脱壳操作 命令行指令 upx -d +文件地址\文件名.后缀名

4、使用IDA32进行逆向分析

5、 Reg.dat

6、jbe short loc_404CA3 jbe指令 如果小于等于则跳转 如果此时的CF标志位或者ZF标志位为1,跳转,其他不跳转 相当于小于等于命令

7、使用CreatefileA打开文件 Reg.dat 若打开文件失败则调用失败指令 所以要创建一个Reg.dat文件 来使得文件可以打开

8、通过字符串寻找到OK Button 和 Cancel Button 最终定位到register窗口刷新函数入口 00437D1C

9、在register入口下断点 几次刷新后 窗口生成

10、在输入Name后 发现窗口没有反应

11、更改第一个serial后 程序被入口停住 f8开始向下调试

12、程序在地址00437D35: jz short loc_437D45跳转 怀疑是跳转到获取数据函数

13、00437D58: 8B 45 FC mov eax, [ebp+var_4] 将输入的值传入eax寄存器中

14、执行函数 00437D5B: E8 D0 EB FC FF call sub_406930

15、执行完函数后 返回输入的第一个序列号

16、00437D60 :89 04 9D 38 A7 43 00 mov ds:dword_43A738[ebx*4], eax 将输入的值存入全局变量中

17、00437D67: EB 6A jmp short loc_437DD3 跳转到另一个函数地址 继续跟踪

18、00437DD3: E8 00 FE FF FF call sub_437BD8 执行该函数 步入函数中查看

19、00437C02: 8B 45 FC mov eax, [ebp+var_4] 将名称Name传入寄存器eax中

20、00437C05: E8 6E BD FC FF call sub_403978 函数返回了Name字符串的长度

21、00437C0A: 83 F8 05 cmp eax, 5 将字符串长度与5相比 有五个及以上继续执行 否则跳转到退出函数处

22、00437C16: 0F B6 00 movzx eax, byte ptr [eax] 从字符串中取出第一个字符

23、00437C19: B9 0A 00 00 00 mov ecx, 0Ah 将10移入寄存器ecx中

24、00437C1E: 99 cdq 扩充寄存器 为除法做准备

25、00437C1F: F7 F9 idiv ecx 0x41h / 0Ah 将字符的ASCII码除以10

26、00437C21: A3 2C A7 43 00 mov ds:dword_43A72C, eax 计算结果为6

27、00437C29: 0F B6 40 02 movzx eax, byte ptr [eax+2] 第二次取出的是第三个字符

28、除了第二次取出的字符跳了一位外 其他除以的操作相同

29、00437C6C: 8D 55 F8 lea edx, [ebp+var_8]
00437C6F: 8B 03 mov eax, [ebx]
00437C71: E8 8A EC FC FF call sub_406900
00437C76: 8B 45 F8 mov eax, [ebp+var_8]
00437C79: E8 FA BC FC FF call sub_403978 获取字符串长度
00437C7E: 48 dec eax 字符串长度不为1还需要继续向下执行 当为1时跳转,因为1– = 0 标志位ZF置为0
00437C7F: 74 0C jz short loc_437C8D 这里如果eax–不为0,会继续执行 将字符串长度调整为1
00437CA5: 8B 0A mov ecx, [edx]
00437CA7: 3B 08 cmp ecx, [eax] 将输入的serial和程序计算得到serial比较
00437CA9: 74 07 jz short loc_437CB2


Malware32
https://wlpswmt.github.io/2022/12/26/Malware32/
作者
Sivan Zhang
发布于
2022年12月26日
许可协议