找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2602|回复: 2

Masm64 shellcode template

[复制链接]
发表于 2016-7-12 02:53:41 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
编译工具 vs或者ddk携带的汇编编译器ml64
  1. option casemap:none


  2. ;--------------------------------------------------------------------------------
  3. ;set name=Shellcode
  4. ;ml /c /coff /Cp /Fl /Gd /nologo %name%.asm
  5. ;link /SUBSYSTEM:CONSOLE /DEBUG /DEBUGTYPE:CV %name%.obj /OUT:%name%.exe
  6. ;PAUSE
  7. ;--------------------------------------------------------------------------------



  8.   
  9. include shellcode.inc
  10. include macro.asm


  11. .code SHELL
  12.         jmp _main                                        ;5
  13. _thunk proc
  14.         jmp QWORD ptr [rax]                        ;2
  15. _thunk endp

  16. CreateProcessA proc  
  17.         call @F                                                ;5
  18.         _imp__CreateProcessA        QWORD offset _thunk__CreateProcessA        ;8
  19. @@:       
  20.         pop rax                                                ;1
  21.         jmp _thunk                                        ;2
  22. CreateProcessA endp


  23. CloseHandle proc
  24.         call @F

  25.         _imp__CloseHandle                QWORD offset _thunk__CloseHandle
  26. @@:       
  27.         pop rax
  28.         jmp _thunk
  29. CloseHandle endp

  30. GetStartupInfo proc
  31.         call @F
  32.         _imp__GetStartupInfoA        QWORD offset _thunk__GetStartupInfo

  33. @@:       
  34.         pop rax
  35.         jmp _thunk
  36. GetStartupInfo endp


  37. _KernelBase proc
  38.         mov rax,(_TEB ptr gs:[0]).NtTib.Self
  39.         mov rax,(_TEB ptr [rax]).ProcessEnvironmentBlock
  40.        
  41.         mov rax,(_PEB ptr [rax]).Ldr
  42.         mov rax,(_PEB_LDR_DATA ptr [rax]).InInitializationOrderModuleList.Flink
  43.        
  44.         mov rdx,(_LIST_ENTRY ptr [rax]).Blink[SizeOf QWORD]        ;ntdll       
  45.        
  46.         mov rax,(_LIST_ENTRY ptr [rax]).Flink
  47.         mov rcx,(_LIST_ENTRY ptr [rax]).Blink[SizeOf QWORD];KERNELBASE
  48.        
  49.        
  50.         mov rax,(_LIST_ENTRY ptr [rax]).Flink
  51.         mov rax,(_LIST_ENTRY ptr [rax]).Blink[SizeOf QWORD];kenrl32
  52.        
  53.         ret
  54. _KernelBase endp


  55. _StrLen proc uses rdi rcx
  56.         or rcx,-1
  57.         mov rdi,rax
  58.         xor rax,rax
  59.         repne scasb
  60.         not rcx
  61.         mov rax,rcx
  62.         ret
  63. _StrLen endp

  64. _StrCmp proc uses rcx rsi rdi
  65.        
  66.         mov rax,rsi
  67.         call _StrLen
  68.        
  69.         mov rcx,rax
  70.        
  71.         mov rax,rdi
  72.         call _StrLen
  73.        
  74.         cmp rax,rcx
  75.         jnz @F
  76.                 repe cmpsb
  77.                 mov rax,rcx
  78.         @@:
  79.         ret
  80.         ret
  81. _StrCmp endp

  82. _GetProcAddress proc uses rsi rdi rbx
  83.         mov rsi,rcx
  84.        
  85.         mov ax,(IMAGE_DOS_HEADER ptr [rsi]).e_magic
  86.        
  87.         cmp ax,"ZM"
  88.         jz @F
  89.        
  90.                 xor rax,rax
  91.                 jmp done
  92.        
  93.         @@:
  94.         mov ebx,(IMAGE_DOS_HEADER ptr [rsi]).e_lfanew
  95.         add rbx,rsi
  96.        
  97.         mov eax,(IMAGE_NT_HEADERS ptr [rbx]).Signature
  98.         cmp eax,"EP"
  99.         jz @F
  100.                 xor rax,rax
  101.                 jmp done
  102.         @@:
  103.        
  104.         lea rbx,(IMAGE_NT_HEADERS ptr [rbx]).OptionalHeader
  105.        
  106.         mov ax,(_IMAGE_OPTIONAL_HEADER64 ptr [rbx]).Magic
  107.         cmp ax,20Bh
  108.         jz @F
  109.                 ;PE 32
  110.                 xor rax,rax
  111.                 jmp done
  112.         @@:
  113.        
  114. EXP EQU IMAGE_DIRECTORY_ENTRY_EXPORT*SizeOf _IMAGE_DATA_DIRECTORY       
  115.         mov ebx,(_IMAGE_OPTIONAL_HEADER64 ptr [ebx]).DataDirectory[EXP][_IMAGE_DATA_DIRECTORY.VirtualAddress]
  116.        
  117.         add rbx,rcx
  118.        
  119.        
  120.         mov r9d,(IMAGE_EXPORT_DIRECTORY ptr [rbx]).AddressOfNames
  121.         add r9,rcx
  122.        
  123.        
  124.         xor r8,r8
  125.        
  126. re:
  127.         mov eax,[r9][r8*4]
  128.         add rax,rcx
  129.        
  130.         mov si,[rax]
  131.        
  132.        
  133.         cmp si,[rdx]
  134.         jnz @F
  135.        
  136.         mov rsi,rax
  137.         mov rdi,rdx
  138.         call _StrCmp
  139.        
  140.         or rax,rax
  141.         jnz @F
  142.        
  143.         mov edi,(IMAGE_EXPORT_DIRECTORY ptr [rbx]).AddressOfFunctions
  144.         add rdi,rcx
  145.        
  146.         mov eax,(IMAGE_EXPORT_DIRECTORY ptr [rbx]).AddressOfNameOrdinals
  147.         add rax,rcx
  148.        
  149.         movzx eax,word ptr [rax][r8*2]
  150.         mov eax,[rdi][rax*4]
  151.         add rax,rcx
  152.        
  153.         jmp done
  154.        
  155.         @@:
  156.         inc r8
  157.         cmp r8d,(IMAGE_EXPORT_DIRECTORY ptr [rbx]).NumberOfNames
  158.         jb re
  159.                
  160.         xor rax,rax


  161. done:               
  162.         ret
  163. _GetProcAddress endp


  164. _thunk__CreateProcessA proc

  165.         push r9
  166.         push r8
  167.         push rdx
  168.         push rcx
  169.         call _KernelBase       
  170.         mov rcx,rax
  171.         call @F       
  172.         byte "CreateProcessA",0
  173.         @@:
  174.         pop rdx
  175.         call _GetProcAddress
  176.        
  177.         mov _imp__CreateProcessA,rax
  178.        
  179.         pop rcx
  180.         pop rdx
  181.         pop r8
  182.         pop r9
  183.         push rax
  184.         ret
  185. _thunk__CreateProcessA endp


  186. _thunk__CloseHandle proc
  187.         push r9
  188.         push r8
  189.         push rdx
  190.         push rcx
  191.         call _KernelBase       
  192.         mov rcx,rax
  193.         call @F       
  194.         byte "CloseHandle",0
  195.         @@:
  196.         pop rdx
  197.         call _GetProcAddress
  198.        
  199.         mov _imp__CloseHandle,rax
  200.        
  201.         pop rcx
  202.         pop rdx
  203.         pop r8
  204.         pop r9
  205.         push rax
  206.         ret
  207. _thunk__CloseHandle endp


  208. _thunk__GetStartupInfo proc
  209.         push r9
  210.         push r8
  211.         push rdx
  212.         push rcx
  213.         call _KernelBase       
  214.         mov rcx,rax
  215.         call @F       
  216.         byte "GetStartupInfoA",0
  217.         @@:
  218.         pop rdx
  219.         call _GetProcAddress
  220.        
  221.         mov _imp__CloseHandle,rax
  222.        
  223.         pop rcx
  224.         pop rdx
  225.         pop r8
  226.         pop r9
  227.         push rax
  228.         ret
  229. _thunk__GetStartupInfo endp


  230. _main proc uses rdi
  231.         @LOCAL _si,STARTUPINFO
  232.         @LOCAL _pi,PROCESS_INFORMATION
  233.         END_LOCAL QWORD * 10
  234.        
  235.         and (STARTUPINFO ptr _si).cb,0
  236.        
  237.        
  238.         fastcall CreateProcessA,rcx,0,0,0,0,0,0,0,addr _si,addr _pi
  239.        
  240.         or eax,eax
  241.         jz @F
  242.        
  243.         fastcall CloseHandle,(PROCESS_INFORMATION ptr _pi).hThread
  244.        
  245.         fastcall CloseHandle,(PROCESS_INFORMATION ptr _pi).hProcess
  246.        
  247.        
  248.         @@:
  249.         EPILOG       
  250.         ret
  251. _main endp


  252. .code




  253. WinMainCRTStartup proc
  254.         int 3       
  255.        
  256.         call @F
  257.         byte "calc.exe",0
  258.         @@:
  259.         pop rcx
  260.         int 3
  261.         call _main
  262.        
  263.         int 3
  264.         ret
  265. WinMainCRTStartup endp


  266. end
复制代码

Shellcode.rar

7.06 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2016-7-12 03:08:10 | 显示全部楼层
有bug反馈,不定时间处理
回复 赞! 靠!

使用道具 举报

发表于 2016-7-12 19:10:47 | 显示全部楼层
支持Ayala!
回复

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-22 21:07 , Processed in 0.043199 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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