Autor
		 | 
		
			Tema: Ayuda con Inyector DLL en VB 2008  (Leído 7,555 veces)
		 | 
	 
 
	
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Bueno, hace 16 Hs que le meto a esto y no puedo encontrar el error,, o mejor dicho, como solucionarlo!! Ahi les va genios...      Private Sub BtnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLoad.Click
          Dim LoadLibHandle As Integer         Dim GetProcHandle As Integer         Dim StartUp As New STARTUPINFO         Dim ProcessInfo As New PROCESS_INFORMATION         Dim DllTam As Integer         Dim VirtualRet As Integer
          Dim bytes() As Byte         bytes = System.Text.Encoding.Unicode.GetBytes(DllName)
          Dim Retorno As Integer
          LoadLibHandle = LoadLibraryA("kernel32.dll")         GetProcHandle = GetProcAddress(LoadLibHandle, "LoadLibraryA")
          Retorno = CreateProcess(txtExeF.Text, vbNullString, vbNullString, vbNullString, vbNullString, PROCESS_CREATION_FLAG.CREATE_SUSPENDED, vbNullString, vbNullString, StartUp, ProcessInfo)
          DllTam = Len(txtDllName.Text)
          VirtualRet = VirtualAllocEx(ProcessInfo.hProcess, vbNullString, DllTam, MEM_COMMIT, PROCESS_ALL_ACCESS)         WriteProcessMemory(ProcessInfo.hProcess, VirtualRet, bytes, DllTam, vbNullString)
          Try
              CreateRemoteThread(ProcessInfo.hProcess, 0, 0, GetProcHandle, VirtualRet, 0, 0)
          Catch ex As Exception
              MsgBox(ex.ToString)
          End Try
          ResumeThread(ProcessInfo.hProcess)
      End Sub
 
 
 Claro esta que esto es una porcion del codigo,, txtDllName es el textbox que tiene el nombre de la dll, txtExeF es el textbox que tiene la ruta del exe.. El error que me salta es: Intento de leer o escribir en la memoria protegida.. Ya no se que hacer con esto!! Jaja Saludos!!  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						| 
							MCKSys Argentina
							
						 | 
						
							
							 
							
Y agregando  MEM_RESERVE en el VAllocX?         VirtualRet = VirtualAllocEx(ProcessInfo.hProcess, vbNullString, DllTam, MEM_COMMIT + MEM_RESERVE, PROCESS_ALL_ACCESS)
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando." 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Gracias por responder MCK.. Mañana lo pruebo y les cuento..    Gracias!  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Bueno,, sigo sin hacer andar esto... Ahora estoy viendo un ejemplo del señor Leandro Ascierto para ocultar procesos del administrador de tareas que utiliza WriteProcessMemory, VirtualAllocEx, OpenProcess... parecido al mio.. pero bueno, cualquier colaboración es bienvenida! Saludos!!
  PD: Alguien sabe por que hay tantas definiciones de constantes diferentes para las constantes de las apis ?  EJ: 
  Public Const PROCESS_ALL_ACCESS = &H1F0FFF Public Const PROCESS_ALL_ACCESS = 0 Private Const PROCESS_ALL_ACCESS As Long = 2035711
  Son todas validas o que ??? Entiendo que estan en diferentes "formatos" pero siquiera son los mismos valores :/
 
  
  2 hs despues: Creo que lo que falla es CreateProcess! Siempre retorna 0 y creo que 0 es error... 
  Ya no se que modificar.... :'|
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 18 Septiembre 2013, 21:54 pm por Vaagish »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
    'ESTRUCTURA PROCESS_INFORMATION     Private Structure PROCESS_INFORMATION         Dim hProcess As Long         Dim hThread As Long         Dim dwProcessId As Long         Dim dwThreadId As Long     End Structure     'ESTRUCTURA STARTUPINFO     Private Structure STARTUPINFO         Dim cb As Long         Dim lpReserved As String     End Structure     'TIPOS PARA LA CREACION DEL PROCESO     Enum PROCESS_CREATION_FLAG As Integer
          CREATE_BREAKAWAY_FROM_JOB = &H1000000         CREATE_DEFAULT_ERROR_MODE = &H4000000         CREATE_NEW_CONSOLE = &H10         CREATE_NEW_PROCESS_GROUP = &H200         CREATE_NO_WINDOW = &H8000000         CREATE_PROTECTED_PROCESS = &H40000         CREATE_PRESERVE_CODE_AUTHZ_LEVEL = &H2000000         CREATE_SEPARATE_WOW_VDM = &H800         CREATE_SHARED_WOW_VDM = &H1000         CREATE_SUSPENDED = &H4         CREATE_UNICODE_ENVIRONMENT = &H400         DEBUG_ONLY_THIS_PROCESS = &H2         DEBUG_PROCESS = &H1         DETACHED_PROCESS = &H8         EXTENDED_STARTUPINFO_PRESENT = &H80000         INHERIT_PARENT_AFFINITY = &H10000         NORMAL_PRIORITY_CLASS = &H10
      End Enum
      'CONSTANTES PARA VIRTUALALLOCEX     Const PROCESS_VM_OPERATION = &H8     Const PROCESS_VM_READ = &H10     Const PROCESS_VM_WRITE = &H20     Const PROCESS_ALL_ACCESS = 0
      Const MEM_COMMIT = &H1000     Const MEM_RESERVE = &H2000     Const MEM_DECOMMIT = &H4000     Const MEM_RELEASE = &H8000     Const MEM_FREE = &H10000     Const MEM_PRIVATE = &H20000     Const MEM_MAPPED = &H40000     Const MEM_TOP_DOWN = &H100000
      Const PAGE_EXECUTE_READWRITE = &H40     Const PAGE_READWRITE = &H4&
  'FUNCIONES APIS     Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpAppName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Integer, ByVal lpThreadAttributes As Integer, ByVal bInheritHandles As Integer, ByVal dwCreationFlags As Integer, ByVal lpEnvironment As Integer, ByVal lpCurrentDirectory As Integer, ByRef lpStartupInfo As STARTUPINFO, ByRef lpProcessInformation As PROCESS_INFORMATION) As Integer     Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, ByVal dwSize As IntPtr, ByVal flAllocationType As Integer, ByVal flProtect As Integer) As IntPtr
      Public Sub Ejecutar(ByVal Programa As String)
          Dim pInfo As PROCESS_INFORMATION         Dim sInfo As New STARTUPINFO
          Dim Process As Long         Dim Memoria As Long
 
          Dim DllLen As Integer = Len(DllName)         sInfo.cb = Len(sInfo)
          Try
              Process = CreateProcessA(vbNullString, Programa, 0, 0, False, PROCESS_CREATION_FLAG.CREATE_SUSPENDED, 0, 0, sInfo, pInfo)             Memoria = VirtualAllocEx(pInfo.hProcess, 0, DllLen, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
          Catch e As Exception
              MsgBox(e.Message)
          End Try
      End Sub
  Ahora me dice "Desbordamiento"??! Desbordamiento culeao? Me esta por enfermar esto...  Odio .NET que portabilidad ni portabilidad...  Alguien que quiera probar ese code a ver que pasa.. ? Gracias.. PD: DllName es el nombre de la dll, con extensión y sin ruta, DllLen es el tamaño del texto o sea: "dllvirus.dll" = 12 y Programa es el Exe a inyectar, con ruta y extensión.. 
 Modificado varias horas despues: el valor con el que se rellena el campo hProcess de la estructura PROCESS_INFORMATION esta podrido... algo va mal cuando se llama a la api,, me da un valor super largo y por eso desborda.. Alguna segerencia???  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 19 Septiembre 2013, 23:36 pm por Vaagish »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Nadie ha pasado por esto?? Soy el primero que hace un inyector en vb,net? Please Help! 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						| 
							MCKSys Argentina
							
						 | 
						
							
							 
							
Nadie ha pasado por esto?? Soy el primero que hace un inyector en vb,net? Please Help!
  Al parecer, si...    Personalmente, .net no me simpatiza para nada. Prefiero Python u otro lenguaje de alto nivel (que no sea Java). Aunque para trabajar en windows, asm es la mejor opción. Por las dudas: te estás inyectando en un proceso de 32 bits, no? Porque código de 32 en 64 no va a funcionar por más inyección que le hagas...    Una cosa que puedes hacer es depurar el .net y poner un BP luego de hacer el CreateProcess. Te attachas con Olly al proceso creado y vas ejecutando en .net instruccion x instruccion y miras lo que pasa en olly (si se crea el nuevo thread, si apunta a la direccion correcta y si la DLL esta bien mapeada, etc.) Saludos!  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando." 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Gracias por responder MCKSys! Los procesos son de 32 bits todos.. voy a tener que hacerle un debug intensivo si.. no queria meterme en esa porque el .net genera un monton de codigo que me marea y no soy muy bueno con el olly ni el windbg :/ 
  Por otro lado, en ASM lo hice andar con 15 Lineas en el codigo,, asi que para mi, queda desmentido que es mas dificil que un lenguaje de alto nivel.. jaja 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Vaagish
							
								 
								
								  Desconectado
								Mensajes: 875
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Quizas deberia estar en programacion vb esto, quizas ahi lo puedamos solucionar..    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	| 
		
		
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda con Inyector para el Counter-Strike
							 
							Programación Visual Basic
						 | 
						
							XP.
						 | 
						
							3
						 | 
						
							2,454
						 | 
						
							 
							
								11 Septiembre 2006, 06:00 am 
								por XP.
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[Source] Inyector de Dll's en C#
							 
							.NET (C#, VB.NET, ASP)
						 | 
						
							Hendrix
						 | 
						
							1
						 | 
						
							3,111
						 | 
						
							 
							
								 3 Junio 2007, 17:23 pm 
								por BADBYTE-K
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[Ayuda] VB-2008?
							 
							.NET (C#, VB.NET, ASP)
						 | 
						
							tito.
						 | 
						
							3
						 | 
						
							2,985
						 | 
						
							 
							
								27 Julio 2009, 16:58 pm 
								por Xaina
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problema con Inyector Dll
							 
							Programación C/C++
						 | 
						
							Vaagish
						 | 
						
							5
						 | 
						
							3,389
						 | 
						
							 
							
								24 Septiembre 2013, 19:34 pm 
								por Vaagish
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							inyectores poco útiles respecto a un inyector reflexivo?
							 
							Análisis y Diseño de Malware
						 | 
						
							Borito30
						 | 
						
							2
						 | 
						
							5,490
						 | 
						
							 
							
								 7 Diciembre 2016, 13:31 pm 
								por Borito30
							
						 | 
					 
				 
			    |