Guest User

d123d123

a guest
Dec 18th, 2020
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. include 'C:\fasm\INCLUDE\win64a.inc'
  2.  
  3. section '.text' code readable executable
  4. start:
  5. sub RSP, 8
  6.  
  7. mov RCX, procname ; lpApplicationName - полный путь к исполняемому модулю
  8. mov RDX, 0 ; lpCommandLine
  9. mov R8, 0 ; lpProcessAttributes
  10. mov R9, 0 ; lpThreadAttributes
  11. mov RAX, pinfo ; 10 var lpProcessInformation ptr to struct
  12. push RAX
  13. mov RAX, sinfo ; 9 var lpStartupInfo ptr to struct
  14. push RAX
  15. push 0 ; 8 var lpCurrentDirectory
  16. push 0 ; 7 var lpEnvironment
  17. mov RAX, 0x0000000000000004 ; 6 var dwCreationFlags = NORMAL_PRIORITY_CLASS
  18. push RAX
  19. push 0 ; 5 var bInheritHandles
  20. sub RSP, 8*4
  21. call [CreateProcessA]
  22. add RSP, 8*4
  23. add RSP, 8*6 ; восстанавливаем стек после пушей
  24.  
  25. sub RSP, 8*4
  26. call [GetLastError]
  27. add RSP, 8*4
  28.  
  29.  
  30. ;
  31. ;mov RCX, 0
  32. ;mov RDX, sizeof.struct_CONTEXT
  33. ;mov R8, MEM_COMMIT+MEM_RESERVE
  34. ;mov R9, PAGE_READWRITE
  35. ;sub RSP, 4*8
  36. ;call [VirtualAlloc]
  37. ;add RSP, 4*8
  38. ;xor RAX, RAX
  39.  
  40. ;mov EAX, 0x00100000+0x00000010+0x00000001+0x00000002+0x00000004+0x00000008+0x00000020
  41. ; mov [context_inf.ContextFlags], EAX
  42.  
  43.  
  44.  
  45. mov RCX, [pinfo.hThread]
  46. mov RDX, context_inf
  47. sub RSP, 8*4
  48. call [GetThreadContext]
  49. add RSP, 8*4
  50.  
  51. sub RSP, 8*4
  52. call [GetLastError]
  53. add RSP, 8*4
  54.  
  55. ;mov RCX, 0
  56. ;mov RDX, msg
  57. ;mov R8, msg
  58. ;mov R9, 0
  59. ;sub RSP, 8*4
  60. ;call [MessageBoxA]
  61. ;add RSP, 8*4
  62.  
  63. mov RCX, 0
  64. sub RSP, 8*4
  65. call [ExitProcess]
  66. add RSP, 8*4
  67.  
  68.  
  69.  
  70. section '.data.' data readable writeable
  71. msg db 'OK!',0
  72. procname db 'C:\Windows\System32\svchost.exe', 0
  73.  
  74.  
  75.  
  76. struct struct_CONTEXT
  77. P1Home dq ? ; 0
  78. P2Home dq ? ; 8
  79. P3Home dq ? ; 16
  80. P4Home dq ? ; 24
  81. P5Home dq ? ; 32
  82. P6Home dq ? ; 40
  83. ContextFlags dd ? ; 48
  84. MxCsr dd ? ; 52
  85. SegCs dw ? ; 56
  86. SegDs dw ? ; 58
  87. SegEs dw ? ; 60
  88. SegFs dw ? ; 62
  89. SegGs dw ? ; 64
  90. SegSs dw ? ; 66
  91. EFlags dd ? ; 68
  92. rDr0 dq ? ; 72
  93. rDr1 dq ? ; 80
  94. rDr2 dq ? ; 88
  95. rDr3 dq ? ; 96
  96. rDr6 dq ? ; 104
  97. rDr7 dq ? ; 112
  98. rRax dq ? ; 120
  99. rRcx dq ? ; 128
  100. rRdx dq ? ; 136
  101. rRbx dq ? ; 144
  102. rRsp dq ? ; 152
  103. rRbp dq ? ; 160
  104. rRsi dq ? ; 168
  105. rRdi dq ? ; 176
  106. rR8 dq ? ; 184
  107. rR9 dq ? ; 192
  108. rR10 dq ? ; 200
  109. rR11 dq ? ; 208
  110. rR12 dq ? ; 216
  111. rR13 dq ? ; 224
  112. rR14 dq ? ; 232
  113. rR15 dq ? ; 240
  114. rRip dq ? ; 248
  115. ;FltSave db 512 dup(0)
  116. FltSave db 96 dup (0)
  117. Header db 32 dup (0) ; 256 [16*2]
  118. Legacy db 128 dup (0) ; 288 [16*8]
  119. rXmm0 db 16 dup (0) ; 416
  120. rXmm1 db 16 dup (0) ; 432
  121. rXmm2 db 16 dup (0) ; 448
  122. rXmm3 db 16 dup (0) ; 464
  123. rXmm4 db 16 dup (0) ; 480
  124. rXmm5 db 16 dup (0) ; 496
  125. rXmm6 db 16 dup (0) ; 512
  126. rXmm7 db 16 dup (0) ; 528
  127. rXmm8 db 16 dup (0) ; 544
  128. rXmm9 db 16 dup (0) ; 560
  129. rXmm10 db 16 dup (0) ; 576
  130. rXmm11 db 16 dup (0) ; 592
  131. rXmm12 db 16 dup (0) ; 608
  132. rXmm13 db 16 dup (0) ; 624
  133. rXmm14 db 16 dup (0) ; 640
  134. rXmm15 db 16 dup (0) ; 656
  135. VectorRegister db 416 dup (0) ; 672 (26*16) ( M128A VectorRegister[26];)
  136. VectorControl dq ? ; 1088
  137. DebugControl dq ? ; 1096
  138. LastBranchToRip dq ? ; 1104
  139. LastBranchFromRip dq ? ; 1112
  140. LastExceptionToRip dq ? ; 1120
  141. LastExceptionFromRip dq ? ; 1128
  142. ends
  143.  
  144.  
  145.  
  146. ; структура для запуска нового процесса
  147. struct strct_STARTUPINFOA
  148. cb dd ?
  149. _padding1 rb 4
  150. lpReserved dq ?
  151. lpDesktop dq ?
  152. lpTitle dq ?
  153. dwX dd ?
  154. dwY dd ?
  155. dwXSize dd ?
  156. dwYSize dd ?
  157. dwXCountChars dd ?
  158. dwYCountChars dd ?
  159. dwFillAttribute dd ?
  160. dwFlags dd ?
  161. wShowWindow dw ?
  162. cbReserved2 dw ?
  163. _padding2 rb 4
  164. lpReserved2 dq ?
  165. hStdInput dq ?
  166. hStdOutput dq ?
  167. hStdError dq ?
  168. ends ;104 byte / 8(max) = 0 OK
  169.  
  170. ; структура 2 для запуска нового процесса
  171.  
  172. struct strct_PROCESS_INFORMATION
  173. hProcess dq ?
  174. hThread dq ?
  175. dwProcessId dd ?
  176. dwThreadId dd ?
  177. ends
  178.  
  179. sinfo strct_STARTUPINFOA
  180. pinfo strct_PROCESS_INFORMATION
  181. context_inf struct_CONTEXT
  182.  
  183. section '.idata' import data readable writeable
  184. library kernel32, 'kernel32.dll',\
  185. User32, 'User32.dll'
  186.  
  187. import kernel32,\
  188. ExitProcess,'ExitProcess',\
  189. CreateProcessA, 'CreateProcessA',\
  190. GetLastError, 'GetLastError',\
  191. GetThreadContext, 'GetThreadContext',\
  192. VirtualAlloc, 'VirtualAlloc'
  193.  
  194. import User32,\
  195. MessageBoxA, 'MessageBoxA'
Add Comment
Please, Sign In to add comment