PE文件格式分析系列(文章3)
一个PE文件rdata段的分析(Win32工程Release版)(二)
下面分析这个PE文件rdata段的常量数据(000050A4---0000543D)
000050A0 | 00 00 00 00 | .... |
000050A8 | FF FF FF FF 27 11 40 00 | '.@. | 这像一个地址00401127
000050B0 | 3B 11 40 00 5F 5F 47 4C | ;.@.__GL | 0040113B 也是
000050B8 | 4F 42 41 4C 5F 48 45 41 | OBAL_HEA | 一段字符
......
000050E0 | 00 00 00 00 72 75 6E 74 | ....runt | 运行时错误?
000050E8 | 69 6D 65 20 65 72 72 6F | ime erro |
000050F0 | 72 20 00 00 0D 0A 00 00 | r ...... |
......
00005128 | 52 36 30 32 38 0D 0A 2D | R6028..- | 好像是错误码
00005130 | 20 75 6E 61 62 6C 65 20 | unable | 不能初始化heap?
00005138 | 74 6F 20 69 6E 69 74 69 | to initi |
00005140 | 61 6C 69 7A 65 20 68 65 | alize he |
00005148 | 61 70 0D 0A 00 00 00 00 | ap...... |
00005150 | 52 36 30 32 37 0D 0A 2D | R6027..- |
00005158 | 20 6E 6F 74 20 65 6E 6F | not eno |
00005160 | 75 67 68 20 73 70 61 63 | ugh spac |
00005168 | 65 20 66 6F 72 20 6C 6F | e for lo |
00005170 | 77 69 6F 20 69 6E 69 74 | wio init |
00005178 | 69 61 6C 69 7A 61 74 69 | ializati |
00005180 | 6F 6E 0D 0A 00 00 00 00 | on...... |
00005188 | 52 36 30 32 36 0D 0A 2D | R6026..- |
00005190 | 20 6E 6F 74 20 65 6E 6F | not eno |
00005198 | 75 67 68 20 73 70 61 63 | ugh spac |
000051A0 | 65 20 66 6F 72 20 73 74 | e for st |
000051A8 | 64 69 6F 20 69 6E 69 74 | dio init |
000051B0 | 69 61 6C 69 7A 61 74 69 | ializati |
000051B8 | 6F 6E 0D 0A 00 00 00 00 | on...... |
000051C0 | 52 36 30 32 35 0D 0A 2D | R6025..- |
000051C8 | 20 70 75 72 65 20 76 69 | pure vi |
000051D0 | 72 74 75 61 6C 20 66 75 | rtual fu |
000051D8 | 6E 63 74 69 6F 6E 20 63 | nction c |
000051E0 | 61 6C 6C 0D 0A 00 00 00 | all..... |
000051E8 | 52 36 30 32 34 0D 0A 2D | R6024..- |
...
00005370 | 4D 69 63 72 6F 73 6F 66 | Microsof | 哈哈, 这个很熟悉哦
00005378 | 74 20 56 69 73 75 61 6C | t Visual |
00005380 | 20 43 2B 2B 20 52 75 6E | C++ Run |
00005388 | 74 69 6D 65 20 4C 69 62 | time Lib |
00005390 | 72 61 72 79 00 00 00 00 | rary.... |
...
000053E0 | 65 50 6F 70 75 70 00 00 | ePopup.. |
000053E8 | 47 65 74 41 63 74 69 76 | GetActiv |
000053F0 | 65 57 69 6E 64 6F 77 00 | eWindow. |
000053F8 | 4D 65 73 73 61 67 65 42 | MessageB |
00005400 | 6F 78 41 00 75 73 65 72 | oxA.user | 怎么也有user32.dll?
00005408 | 33 32 2E 64 6C 6C 00 00 | 32.dll.. |
...
00005428 | 22 3F 40 00 26 3F 40 00 |
00005430 | FF FF FF FF A6 40 40 00 |
00005438 | AA 40 40 00 |
分析过程如下:
OD反汇编了一下代码段, 看到一些指令
00401055 |. 68 A8504000 PUSH OFFSET 004050A8 ; FF FF FF FF
00401B0B |. 68 B4504000 PUSH OFFSET 004050B4 ; |Arg1 = ASCII "__GLOBAL_HEAP_SELECTED"
00401ACC |. 68 CC504000 PUSH OFFSET 004050CC ; |Name = "__MSVCRT_HEAP_SELECT"
00401F46 |. 68 70534000 PUSH OFFSET 00405370 ; ASCII "Microsoft Visual C++ Runtime Library"
00401F1E |. 68 98534000 PUSH OFFSET 00405398 ; ASCII ""
00401F00 |. 68 9C534000 PUSH OFFSET 0040539C ; ASCII "Runtime Error! Program: "
00401EEC |. 68 B8534000 PUSH OFFSET 004053B8 ; ASCII "..."
00401EAA |. 68 BC534000 PUSH OFFSET