设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 4676|回复: 0

[特种技术] RLPack脱壳手记

[复制链接]
发表于 2012-3-12 13:54:11 | 显示全部楼层 |阅读模式
本帖最后由 十二 于 2012-3-12 13:58 编辑
  1. 勾选除转换 OEP 到虚拟机和高级输入表重定向(我WIN7勾选这个程序报错跑不起来),还有密码保护以外的所有保护选项。

  2. Ollydbg - F3 载入 被加壳的程序代码如下:

  3. 00401000 > [        DISCUZ_CODE_813        ]nbsp; 57            PUSH EDI
  4. 00401001   .  C7C7 72AFB4DF MOV EDI,DFB4AF72
  5. 00401007   .  8D3D 5FBA581A LEA EDI,DWORD PTR DS:[1A58BA5F]
  6. 0040100D   .  FFCF          DEC EDI
  7. 0040100F   .  0FACF7 F2     SHRD EDI,ESI,0F2                         ;  移位常量超出 1..31 的范围
  8. 。。。。。。。
  9. 。。。。。。。
  10. 往下翻能找到一个远跳; F4此处,004011EA   .- E9 15680A00   JMP RLPack.004A7A04。
  11.       F8步过得到如下代码:
复制代码
  1. 004A7A04    60              PUSHAD
  2. 004A7A05    E8 00000000     CALL RLPack.004A7A0A
  3. 004A7A0A    83C4 04         ADD ESP,4
  4. 004A7A0D    8B6C24 FC       MOV EBP,DWORD PTR SS:[ESP-4]
  5. 004A7A11    E8 8B020000     CALL RLPack.004A7CA1 -----------------申请内存,解压代码,更新004A9E8F代码段
  6. 004A7A16    E8 74240000     CALL RLPack.004A9E8F -----------------得到kernel32和user32的基址
  7. 004A7A1B    E8 88430000     CALL RLPack.004ABDA8 -----------------保存VirtualFree的地址
复制代码
  1. 004A7A20    837C24 28 01    CMP DWORD PTR SS:[ESP+28],1
  2. 004A7A25    75 0C           JNZ SHORT RLPack.004A7A33
  3. 004A7A27    8B4424 24       MOV EAX,DWORD PTR SS:[ESP+24]
  4. 004A7A2B    8985 7E470000   MOV DWORD PTR SS:[EBP+477E],EAX                      kernel32.BaseThreadInitThunk
  5. 004A7A31    EB 0C           JMP SHORT RLPack.004A7A3F
  6. 004A7A33    8B85 7A470000   MOV EAX,DWORD PTR SS:[EBP+477A]                    
  7. 004A7A39    8985 7E470000   MOV DWORD PTR SS:[EBP+477E],EAX                           kernel32.BaseThreadInitThunk
  8. 004A7A3F    E8 100D0000     CALL RLPack.004A8754 -------------------------对PE头进行操作得到.packed的大小,入口点,等信息并保存。
  9. 004A7A44    E8 6F240000     CALL RLPack.004A9EB8 -----------------------得到kernel32的基址遍历导出表得到Openmutex和CreateMutex完成互斥操作。
  10. 004A7A49    E8 1F230000     CALL RLPack.004A9D6D -------------------------得到User32的基址得到MessageBoxA完成以后的校验报错的功能此函数内部拥有一个SEH检测,如果你的OD过不了可以手动NOP【004A9DDB    8700            XCHG DWORD PTR DS:[EAX],EAX】此句。
  11. 004A7A4E    8DB5 75550000   LEA ESI,DWORD PTR SS:[EBP+5575]
  12. 004A7A54    8D9D 17030000   LEA EBX,DWORD PTR SS:[EBP+317]
  13. 004A7A5A    33FF            XOR EDI,EDI
  14. 004A7A5C    E8 3B3D0000     CALL RLPack.004AB79C-------------------------------得到之前保存的PE头信息,此函数对PE头做了一些奇怪又邪恶的事情(抹掉了PE头中区段的大小和RVA,使其无法被正常dump)

  15. 使其变正常的方法,F7进入CALL RLPack.004AB79C找到一下这段代码:
  16.          
  17. {
  18.          004AB79C    60              PUSHAD
  19.          004AB79D    E8 4D030000     CALL RLPack.004ABAEF---------------------得到镜像基址
  20.          004AB7A2    E8 FB020000     CALL RLPack.004ABAA2----------------------邪恶的抹区段大小和RVA
  21.          004AB7A7    E8 AC030000     CALL RLPack.004ABB58----------------------做一些不可告人的秘密,具体如下
  22. 得到一下函数地址:
  23.    004AC53B  77023EA8  kernel32.IsDebuggerPresent
  24.    004AC53F  77043F81  kernel32.CheckRemoteDebuggerPresent
  25.    004AC543  77033861  kernel32.GetVersionExA
  26.    004AC547  7702CEE8  kernel32.CreateFileA
  27.    004AC54B  7702CAC4  kernel32.GetCurrentProcessId
  28. }

  29. F7进入CALL RLPack.004ABAA2
  30. 找到如下代码,Nop掉JA就可以了

  31. {
  32.          004ABAE3    C60401 00       MOV BYTE PTR DS:[ECX+EAX],0
  33.          004ABAE7    49              DEC ECX
  34.          004ABAE8    83F9 00         CMP ECX,0
  35.          004ABAEB  ^ 77 F6           JA SHORT RLPack.004ABAE3
  36. }


  37. 004A7A61    EB 03           JMP SHORT RLPack.004A7A66
复制代码
  1. 004A7A66   /EB 1B           JMP SHORT RLPack.004A7A83
  2. 004A7A68   |8B85 7E470000   MOV EAX,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  3. 004A7A6E   |FF7437 04       PUSH DWORD PTR DS:[EDI+ESI+4]
  4. 004A7A72   |010424          ADD DWORD PTR SS:[ESP],EAX                                   ; RLPack.00400000
  5. 004A7A75   |FF3437          PUSH DWORD PTR DS:[EDI+ESI]
  6. 004A7A78   |010424          ADD DWORD PTR SS:[ESP],EAX                                   ; RLPack.00400000
  7. 004A7A7B   |FFD3            CALL EBX                                                     ; RLPack.004A7D21---------------------------------------解压大量代码
  8. 004A7A7D   |83C4 08         ADD ESP,8
  9. 004A7A80   |83C7 08         ADD EDI,8
  10. 004A7A83   \833C37 00       CMP DWORD PTR DS:[EDI+ESI],0
  11. 004A7A87  ^ 75 DF           JNZ SHORT RLPack.004A7A68
  12. 004A7A89    83BD 55550000 0>CMP DWORD PTR SS:[EBP+5555],0
  13. 004A7A90    74 0E           JE SHORT RLPack.004A7AA0
  14. 004A7A92    83BD 59550000 0>CMP DWORD PTR SS:[EBP+5559],0
  15. 004A7A99    74 05           JE SHORT RLPack.004A7AA0
  16. 004A7A9B    E8 F30B0000     CALL RLPack.004A8693---------------------------------------对解压出.packed段的代码进行CALL的修正
  17. 004A7AA0    8D7437 04       LEA ESI,DWORD PTR DS:[EDI+ESI+4]
  18. 004A7AA4    E8 660B0000     CALL RLPack.004A860F
  19. 004A7AA9    8B85 D44D0000   MOV EAX,DWORD PTR SS:[EBP+4DD4]
  20. 004A7AAF    0BC0            OR EAX,EAX                                                   ; RLPack.00400000
  21. 004A7AB1    74 0B           JE SHORT RLPack.004A7ABE
  22. 004A7AB3    0385 7E470000   ADD EAX,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  23. 004A7AB9    E8 C2030000     CALL RLPack.004A7E80----------------------------------------------------------抽取代码进行重定向
  24. 004A7ABE    83BD DA4F0000 0>CMP DWORD PTR SS:[EBP+4FDA],1
  25. 004A7AC5    75 13           JNZ SHORT RLPack.004A7ADA
  26. 004A7AC7    89B5 DE4F0000   MOV DWORD PTR SS:[EBP+4FDE],ESI                              ; RLPack.004ACF7F
  27. 004A7ACD    EB 03           JMP SHORT RLPack.004A7AD2
  28. 004A7ACF    83C6 04         ADD ESI,4
  29. 004A7AD2    837E FC FF      CMP DWORD PTR DS:[ESI-4],-1
  30. 004A7AD6  ^ 75 F7           JNZ SHORT RLPack.004A7ACF
  31. 004A7AD8    EB 03           JMP SHORT RLPack.004A7ADD
  32. 004A7ADA    83C6 08         ADD ESI,8
  33. 004A7ADD    8B06            MOV EAX,DWORD PTR DS:[ESI]
  34. 004A7ADF    8985 9E470000   MOV DWORD PTR SS:[EBP+479E],EAX                              ; RLPack.00400000
  35. 004A7AE5    83C6 04         ADD ESI,4
  36. 004A7AE8    E8 3A400000     CALL RLPack.004ABB27-----------------------------------对代码进行校验此CALL没过之前不能对004A7A04-004AD283内存段做任何修改否则进程退出。
  37. 004A7AED    83C6 04         ADD ESI,4
  38. 004A7AF0    53              PUSH EBX                                                     ; RLPack.004A7D21
  39. 004A7AF1    6A 40           PUSH 40
  40. 004A7AF3    68 00100000     PUSH 1000
  41. 004A7AF8    68 AC020000     PUSH 2AC
  42. 004A7AFD    6A 00           PUSH 0
  43. 004A7AFF    FF95 FD030000   CALL DWORD PTR SS:[EBP+3FD]                                  ; kernel32.VirtualAlloc
  44. 004A7B05    8985 71550000   MOV DWORD PTR SS:[EBP+5571],EAX                              ; RLPack.00400000
  45. 004A7B0B    5B              POP EBX                                                      ; RLPack.004A7D21
  46. 004A7B0C    FFB5 71550000   PUSH DWORD PTR SS:[EBP+5571]                                 ; RLPack.004A7A0A
  47. 004A7B12    56              PUSH ESI                                                     ; RLPack.004ACF7F
  48. 004A7B13    FFD3            CALL EBX                                                     ; RLPack.004A7D21
  49. 004A7B15    83C4 08         ADD ESP,8
  50. 004A7B18    E8 D53E0000     CALL RLPack.004AB9F2---------------------------------NOP掉
  51. 004A7B1D    E8 91340000     CALL RLPack.004AAFB3
  52. 004A7B22    83BD 83500000 0>CMP DWORD PTR SS:[EBP+5083],0
  53. 004A7B29    74 13           JE SHORT RLPack.004A7B3E
  54. 004A7B2B    83BD A34E0000 0>CMP DWORD PTR SS:[EBP+4EA3],0
  55. 004A7B32    74 0A           JE SHORT RLPack.004A7B3E
  56. 004A7B34    E8 38330000     CALL RLPack.004AAE71
  57. 004A7B39    E8 4F2C0000     CALL RLPack.004AA78D
  58. 004A7B3E    8BB5 71550000   MOV ESI,DWORD PTR SS:[EBP+5571]                              ; RLPack.004A7A0A
  59. 004A7B44    8BC6            MOV EAX,ESI                                                  ; RLPack.004ACF7F
  60. 004A7B46    EB 01           JMP SHORT RLPack.004A7B49
  61. 004A7B48    40              INC EAX                                                      ; RLPack.00400000
  62. 004A7B49    8038 01         CMP BYTE PTR DS:[EAX],1
  63. 004A7B4C  ^ 75 FA           JNZ SHORT RLPack.004A7B48-----------------------------------得到原始的导出DLL名,准备处理IAT。
  64. 004A7B4E    40              INC EAX                                                      ; RLPack.00400000
  65. 004A7B4F    8B38            MOV EDI,DWORD PTR DS:[EAX]
  66. 004A7B51    8B8D 7A470000   MOV ECX,DWORD PTR SS:[EBP+477A]                              ; RLPack.00400000
  67. 004A7B57    3B8D 7E470000   CMP ECX,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  68. 004A7B5D    74 1A           JE SHORT RLPack.004A7B79
  69. 004A7B5F    83BD E04D0000 0>CMP DWORD PTR SS:[EBP+4DE0],0
  70. 004A7B66    76 11           JBE SHORT RLPack.004A7B79
  71. 004A7B68    83BD F84D0000 0>CMP DWORD PTR SS:[EBP+4DF8],0
  72. 004A7B6F    75 08           JNZ SHORT RLPack.004A7B79
  73. 004A7B71    03F9            ADD EDI,ECX
  74. 004A7B73    2BBD 7E470000   SUB EDI,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  75. 004A7B79    03BD 7E470000   ADD EDI,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  76. 004A7B7F    83C0 04         ADD EAX,4
  77. 004A7B82    8985 6D550000   MOV DWORD PTR SS:[EBP+556D],EAX                              ; RLPack.00400000
  78. 004A7B88    E8 250C0000     CALL RLPack.004A87B2
  79. 004A7B8D    E8 1B0D0000     CALL RLPack.004A88AD
  80. 004A7B92    E8 B3100000     CALL RLPack.004A8C4A
  81. 004A7B97    E8 DC390000     CALL RLPack.004AB578
  82. 004A7B9C    E9 B1000000     JMP RLPack.004A7C52
  83. 004A7BA1    E8 71200000     CALL RLPack.004A9C17
  84. 004A7BA6    56              PUSH ESI                                                     ; RLPack.004ACF7F
  85. 004A7BA7    FF95 09040000   CALL DWORD PTR SS:[EBP+409]                                  ; kernel32.GetModuleHandleA
  86. 004A7BAD    85C0            TEST EAX,EAX                                                 ; RLPack.00400000
  87. 004A7BAF    0F84 BF200000   JE RLPack.004A9C74
  88. 004A7BB5    8985 69550000   MOV DWORD PTR SS:[EBP+5569],EAX                              ; RLPack.00400000
  89. 004A7BBB    8BC6            MOV EAX,ESI                                                  ; RLPack.004ACF7F
  90. 004A7BBD    EB 43           JMP SHORT RLPack.004A7C02
  91. 004A7BBF    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]                              ; RLPack.004A9DDD
  92. 004A7BC5    8B00            MOV EAX,DWORD PTR DS:[EAX]
  93. 004A7BC7    E8 16360000     CALL RLPack.004AB1E2
  94. 004A7BCC    50              PUSH EAX                                                     ; RLPack.00400000
  95. 004A7BCD    FFB5 69550000   PUSH DWORD PTR SS:[EBP+5569]
  96. 004A7BD3    E8 E9400000     CALL RLPack.004ABCC1
  97. 004A7BD8    85C0            TEST EAX,EAX                                                 ; RLPack.00400000
  98. 004A7BDA    0F84 5B200000   JE RLPack.004A9C3B
  99. 004A7BE0    E8 FF360000     CALL RLPack.004AB2E4
  100. 004A7BE5    E8 85350000     CALL RLPack.004AB16F
  101. 004A7BEA    83C7 04         ADD EDI,4
  102. 004A7BED    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]                              ; RLPack.004A9DDD
  103. 004A7BF3    8938            MOV DWORD PTR DS:[EAX],EDI
  104. 004A7BF5    8385 6D550000 0>ADD DWORD PTR SS:[EBP+556D],4
  105. 004A7BFC    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]                              ; RLPack.004A9DDD
  106. 004A7C02    8338 00         CMP DWORD PTR DS:[EAX],0
  107. 004A7C05  ^ 75 B8           JNZ SHORT RLPack.004A7BBF
  108. 004A7C07    EB 01           JMP SHORT RLPack.004A7C0A
  109. 004A7C09    46              INC ESI                                                      ; RLPack.004ACF7F
  110. 004A7C0A    803E 00         CMP BYTE PTR DS:[ESI],0
  111. 004A7C0D  ^ 75 FA           JNZ SHORT RLPack.004A7C09
  112. 004A7C0F    46              INC ESI                                                      ; RLPack.004ACF7F
  113. 004A7C10    83C0 04         ADD EAX,4
  114. 004A7C13    8B38            MOV EDI,DWORD PTR DS:[EAX]
  115. 004A7C15    8B8D 7A470000   MOV ECX,DWORD PTR SS:[EBP+477A]                              ; RLPack.00400000
  116. 004A7C1B    3B8D 7E470000   CMP ECX,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  117. 004A7C21    74 1A           JE SHORT RLPack.004A7C3D
  118. 004A7C23    83BD E04D0000 0>CMP DWORD PTR SS:[EBP+4DE0],0
  119. 004A7C2A    76 11           JBE SHORT RLPack.004A7C3D
  120. 004A7C2C    83BD F84D0000 0>CMP DWORD PTR SS:[EBP+4DF8],0
  121. 004A7C33    75 08           JNZ SHORT RLPack.004A7C3D
  122. 004A7C35    03F9            ADD EDI,ECX
  123. 004A7C37    2BBD 7E470000   SUB EDI,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  124. 004A7C3D    03BD 7E470000   ADD EDI,DWORD PTR SS:[EBP+477E]                              ; RLPack.00400000
  125. 004A7C43    C700 FFFFFFFF   MOV DWORD PTR DS:[EAX],-1
  126. 004A7C49    83C0 04         ADD EAX,4
  127. 004A7C4C    8985 6D550000   MOV DWORD PTR SS:[EBP+556D],EAX                              ; RLPack.00400000
  128. 004A7C52    803E 01         CMP BYTE PTR DS:[ESI],1
  129. 004A7C55  ^ 0F85 46FFFFFF   JNZ RLPack.004A7BA1-------------------------------------处理IAT
  130. 004A7C5B    E8 B0350000     CALL RLPack.004AB210
  131. 004A7C60    68 00400000     PUSH 4000
  132. 004A7C65    68 AC020000     PUSH 2AC
  133. 004A7C6A    FFB5 71550000   PUSH DWORD PTR SS:[EBP+5571]                                 ; RLPack.004A7A0A
  134. 004A7C70    FF95 05040000   CALL DWORD PTR SS:[EBP+405]                                  ; RLPack.004ABDC3
  135. 004A7C76    E8 D0220000     CALL RLPack.004A9F4B
  136. 004A7C7B    E8 CC340000     CALL RLPack.004AB14C
  137. 004A7C80    E8 DF0B0000     CALL RLPack.004A8864
  138. 004A7C85    E8 850A0000     CALL RLPack.004A870F
  139. 004A7C8A    83BD 0C4E0000 0>CMP DWORD PTR SS:[EBP+4E0C],0
  140. 004A7C91    74 07           JE SHORT RLPack.004A7C9A
  141. 004A7C93    E9 10100000     JMP RLPack.004A8CA8
  142. 004A7C98    EB 01           JMP SHORT RLPack.004A7C9B
  143. 004A7C9A    61              POPAD
  144. 004A7C9B  - E9 0096F5FF     JMP RLPack.004012A0---------------------------------入口点,下断点

  145. IA处理函数:
  146. 004A7BA1    E8 71200000     CALL RLPack.004A9C17---------------------得到模块名
  147. 004A7BA6    56              PUSH ESI
  148. 004A7BA7    FF95 09040000   CALL DWORD PTR SS:[EBP+409]                                  ; kernel32.GetModuleHandleA
  149. 004A7BAD    85C0            TEST EAX,EAX
  150. 004A7BAF    0F84 BF200000   JE RLPack.004A9C74
  151. 004A7BB5    8985 69550000   MOV DWORD PTR SS:[EBP+5569],EAX
  152. 004A7BBB    8BC6            MOV EAX,ESI
  153. 004A7BBD    EB 43           JMP SHORT RLPack.004A7C02
  154. 004A7BBF    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]
  155. 004A7BC5    8B00            MOV EAX,DWORD PTR DS:[EAX]
  156. 004A7BC7    E8 16360000     CALL RLPack.004AB1E2-------------------------代码校验段
  157. 004AB1E2    60              PUSHAD
  158. 004AB1E3    8BF0            MOV ESI,EAX
  159. 004AB1E5    8D85 D8370000   LEA EAX,DWORD PTR SS:[EBP+37D8]
  160. 004AB1EB    8D8D 6E3B0000   LEA ECX,DWORD PTR SS:[EBP+3B6E]
  161. 004AB1F1    2BC8            SUB ECX,EAX
  162. 004AB1F3    33DB            XOR EBX,EBX                                                  ; RLPack.004A7D21
  163. 004AB1F5    33D2            XOR EDX,EDX
  164. 004AB1F7    EB 0A           JMP SHORT RLPack.004AB203
  165. 004AB1F9    FF30            PUSH DWORD PTR DS:[EAX]----------------------校验004AB1E2段校验大小00000396,这里的处理是个仁者人间智者见智的,你可以复制004AB1E2的代码到一块新内存中然后修改004AB1E5、004AB1EB、004AB1F1 EAX到你申请的内存中过校验。也可以call前修该xx然后校验的时候修改回来。
  166. 004AB1FB    5A              POP EDX
  167. 004AB1FC    32DA            XOR BL,DL
  168. 004AB1FE    C1C3 07         ROL EBX,7
  169. 004AB201    40              INC EAX
  170. 004AB202    49              DEC ECX                                                      ; ntdll.77606570
  171. 004AB203    83F9 00         CMP ECX,0
  172. 004AB206  ^ 77 F1           JA SHORT RLPack.004AB1F9
  173. 004AB208    33F3            XOR ESI,EBX                                                  ; RLPack.004A7D21
  174. 004AB20A    897424 1C       MOV DWORD PTR SS:[ESP+1C],ESI
  175. 004AB20E    61              POPAD
  176. 004AB20F    C3              RETN
复制代码
  1. 004A7BCC    50              PUSH EAX
  2. 004A7BCD    FFB5 69550000   PUSH DWORD PTR SS:[EBP+5569]                                 ; msvcrt.76C10000
  3. 004A7BD3    E8 E9400000     CALL RLPack.004ABCC1------------------------得到函数地址
  4. 004A7BD8    85C0            TEST EAX,EAX
  5. 004A7BDA    0F84 5B200000   JE RLPack.004A9C3B
  6. 004A7BE0    E8 FF360000     CALL RLPack.004AB2E4----------------------------填充IAT**
复制代码
  1. 004AB2E4    60              PUSHAD
  2. 004AB2E5    83BD F44D0000 0>CMP DWORD PTR SS:[EBP+4DF4],0
  3. 004AB2EC    0F85 FA000000   JNZ RLPack.004AB3E
  4. 。。。。。。。。。
  5. 。。。。。。。。。
  6. {
  7.       004AB3EC    8BBD 69550000   MOV EDI,DWORD PTR SS:[EBP+5569]
  8.       004AB3F2    83BD F84D0000 0>CMP DWORD PTR SS:[EBP+4DF8],0
  9.       004AB3F9    74 14           JE SHORT RLPack.004AB40F
  10.       004AB3FB    3BBD A2470000   CMP EDI,DWORD PTR SS:[EBP+47A2]                              
  11.       004AB401    74 0C           JE SHORT RLPack.004AB40F
  12.       004AB403    3BBD A6470000   CMP EDI,DWORD PTR SS:[EBP+47A6]                              ; user32.#2372
  13. };括号中的代码全部nop掉
  14. 004AB409    0F85 67010000   JNZ RLPack.004AB576 此句改成 JNZ 改成 JMP 表示处理全部IAT不进行加密。(**如上所说此地址范围是被校验的,过校验的方法上面也已经提到了,不要说这里一改就挂掉那一定是上面的校验没处理
复制代码
  1. 004A7BE5    E8 85350000     CALL RLPack.004AB16F
  2. 004A7BEA    83C7 04         ADD EDI,4
  3. 004A7BED    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]
  4. 004A7BF3    8938            MOV DWORD PTR DS:[EAX],EDI                                   ; RLPack.00478314
  5. 004A7BF5    8385 6D550000 0>ADD DWORD PTR SS:[EBP+556D],4
  6. 004A7BFC    8B85 6D550000   MOV EAX,DWORD PTR SS:[EBP+556D]
  7. 004A7C02    8338 00         CMP DWORD PTR DS:[EAX],0
  8. 004A7C05  ^ 75 B8           JNZ SHORT RLPack.004A7BBF
  9. 004A7C07    EB 01           JMP SHORT RLPack.004A7C0A
  10. 004A7C09    46              INC ESI
  11. 004A7C0A    803E 00         CMP BYTE PTR DS:[ESI],0
  12. 004A7C0D  ^ 75 FA           JNZ SHORT RLPack.004A7C09
  13. 全部处理之后F9你就会断在004A7C9B  - E9 0096F5FF     JMP RLPack.004012A0 F8 飞向入口点。
  14. importRec修复IAT全部有效 dump 出来

  15. 不出意外程序无法运行 因为004A7AB9    E8 C2030000     CALL RLPack.004A7E80抽取了代码进行了重定
  16. 位可以看到dump出来的pe中有很多这种代码:
复制代码
  1. 004012A0   .  55            PUSH EBP                                                     ;  RLPack.004A7A0A
  2. 004012A1   .  89E5          MOV EBP,ESP
  3. 004012A3   .  83EC 08       SUB ESP,8
  4. 004012A6   .  C70424 020000>MOV DWORD PTR SS:[ESP],2
  5. 004012AD   .  FF15 40834700 CALL DWORD PTR DS:[478340]
  6. 004012B3   .- E9 70F01301   JMP 01540328******
复制代码

  1. 处理这种状况可以根据01540328 内存段的大小 VirtualAlloc下断修改返回值到你申请的内存必须高于 0x00400000  然后dump 这段内存修改PE文件计算基址和内存段,在PE节表中添加dump出来的内存。

  2. 没了
复制代码

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-10-31 07:16

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表