Autor
|
Tema: [NEW]mAPIObfuscation - Ofuscar Strings de las APIs... [NO CallAPIByName] (Leído 5,797 veces)
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Option Explicit '--------------------------------------------------------------------------------------- ' Module : mAPIObfuscation ' Author : Karcrack ' Now$ : 29/08/2009 13:54 ' Used for? : Obfuscate API Declaration '--------------------------------------------------------------------------------------- 'MSVBVM60 Private Declare Sub CopyBytes Lib "MSVBVM60" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any) 'KERNEL32 Private 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 Private Declare Function IsBadReadPtr Lib "KERNEL32" (ByRef lp As Any, ByVal ucb 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
Ejemplo:Option Explicit 'USER32 '_Private Declare Function MessageBox Lib "USER32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Private Declare Function MessageBox Lib "ª¬ºÌÍ" Alias "²šŒŒž˜š½‡¾" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Sub Main() If DeObfuscateAPI("ª¬ºÌÍ", "²šŒŒž˜š½‡¾") = True Then Call MessageBox(0, "TEST", "TEST", 0) End If End Sub
Creo que esta bastente claro... pero por si acaso dire que lo que hace es declarar las APIs con las cadenas encriptadas (lo que hace que en el EXE no aparezcan las cadenas...) y luego las desecripta en Ejecucion...
|
|
|
En línea
|
|
|
|
aaronduran2
|
Lo probé cuando lo bajé de HH y no me funciona, no hace nada. Probé con el ejemplo de URLDownloadToFile y tampoco. ¿Que pasará? EDITO: vale, el problema era que lo ejecuté desde el IDE. Funciona perfecto. Muy buen aporte
|
|
« Última modificación: 31 Agosto 2009, 18:11 pm por aaronduran2 »
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Claro, ese es el problema... If App.LogMode = 0 Then GoTo OUT Si se ejecutara en el IDE crashearia, porque hay partes de la memoria bloqueada por el IDE...
|
|
|
En línea
|
|
|
|
LeandroA
|
Muy bueno Karcrack, que tipo de cifrado utiliza?, estaria bueno que agas un proyecto para facilitar las declaraciones, algo asi como ingresar la declaración normal en un textbox, la encripte, y la ponga en el portapapeles.
Saludos.
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Muy bueno Karcrack, que tipo de cifrado utiliza?, estaria bueno que agas un proyecto para facilitar las declaraciones, algo asi como ingresar la declaración normal en un textbox, la encripte, y la ponga en el portapapeles.
Saludos.
Es un XOR &HFF 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 unos dias saco una aplicacion que cifra todas las APIs de forma automatica (Tipo KPC)
|
|
« Última modificación: 31 Agosto 2009, 21:44 pm por Karcrack »
|
En línea
|
|
|
|
MCKSys Argentina
|
Muy bueno!! Voy a probarlo a ver que tal (Parece que VBDecompiler va a enloquecer ) Saludos!
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Muy bueno!! Voy a probarlo a ver que tal (Parece que VBDecompiler va a enloquecer ) Saludos! Si te interesa saltarte al VBDecompiler mira este codigo que hice hace poco: http://hackhound.org/forum/index.php?topic=21639 Para evitar que te decompilen con VBDecompiler y otros similares (P32Dasm por ejemplo), simplemente necesitas mover en primer PUSH que hace la aplicacion de VB un BYTE hacia adelante... en caso de que sea necesario tambien cambiar la cadena "VB5!" del ejecutable Saludos
|
|
|
En línea
|
|
|
|
MCKSys Argentina
|
Je,je,je. Si, si. Ya lo sabia. Hice un "pequeño" loader que "ofusca" el VBHeader y cambia el punto de entrada de los eventos (Mete unos JMPs a la parte final del EXE y despues vuelve ) Gracias de todas formas... Saludos! PD: El link no funciona o yo no se para donde agarrar...
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con CallAPIByName
Programación Visual Basic
|
C0r3_
|
4
|
2,768
|
4 Febrero 2011, 22:52 pm
por C0r3_
|
|
|
ofuscar html
Desarrollo Web
|
Kase
|
2
|
4,384
|
3 Junio 2011, 09:33 am
por Kase
|
|
|
Ofuscar batch
Dudas Generales
|
Pretoriano 01
|
3
|
7,511
|
27 Agosto 2011, 12:25 pm
por Slava_TZD
|
|
|
mAPIObfuscation
Programación Visual Basic
|
Dark4ngel
|
5
|
3,182
|
29 Octubre 2011, 18:15 pm
por Dark4ngel
|
|
|
Obtener resultados de la API llamada por CallApiByName
Programación Visual Basic
|
Distorsion
|
0
|
1,497
|
29 Octubre 2012, 05:36 am
por Distorsion
|
|