elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Saltarse un tipo de heurística
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Saltarse un tipo de heurística  (Leído 4,337 veces)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #10 en: 5 Marzo 2008, 23:33 pm »

Hasta ahora no e llegado a casa, aqui tienes el codigo en C/C++:

Código
  1. int main(int argc, char* argv[])
  2. {
  3. //Creamos el tipo para poder llamar a la API
  4. typedef UINT (CALLBACK* tipo)(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);
  5.  
  6. HINSTANCE hDLL;              
  7. tipo api;
  8. UINT resultado;
  9.  
  10. //Cargamos la libreria
  11. hDLL = LoadLibrary("User32.dll");
  12.  
  13. //Si no la encuentra salimos
  14. if (hDLL != NULL)
  15. {
  16. //Creamos el puntero a la API, para ello guardamos la direccion de MessageBoxA en nuestro tipo
  17. api = (tipo)GetProcAddress(hDLL,"MessageBoxA");
  18.  
  19. if (!api)
  20. {
  21. // Ha habido error, liberamos la Dll
  22. FreeLibrary(hDLL);
  23. return 0;
  24. }
  25. else
  26. {
  27. //Lamamos a la API a través del puntero
  28. resultado = api(0,"Hola","Hola",MB_OK);
  29. }
  30. }
  31. return 0;
  32. }

Te lo e explicado un poquito para que lo entiendas  ;)

Un Saludo  :)



En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #11 en: 5 Marzo 2008, 23:51 pm »

Jejeje...al final me habeis picado y he hecho todo lo que me habeis dicho. Con este código:
Código:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Const HKEY_LOCAL_MACHINE = &H80000001
Const REG_SZ = 1
Private Sub Form_Load()
Dim System32 As String, Windows As String, Clave, Clave2
System32 = "c:\windows\system32\aa.exe"
Windows = "c:\windows\aa.exe"
'Puesto en las propiedad Form1.ShowInTaskbar = False
Form1.Visible = False
App.TaskVisible = False
RegOpenKey HKEY_LOCAL_MACHINE, "\software\microsoft\windows\currentversion\run", Clave
RegSetValueEx Clave, "virus", 0, REG_SZ, ByVal System32, Len(System32) + 1
RegOpenKey HKEY_LOCAL_MACHINE, "\software\microsoft\windows\currentversion\runonce", Clave2
RegSetValueEx Clave2, "virus", 0, REG_SZ, ByVal Windows, Len(Windows) + 1
FileCopy App.Path & "\" & App.EXEName & ".exe", System32
FileCopy App.Path & "\" & App.EXEName & ".exe", Windows
Sleep (5000)
Kill "c:\windows\system32\aa.exe"
Kill "c:\windows\aa.exe"
RegDeleteValue Clave, "virus"
RegDeleteValue Clave2, "virus"
RegCloseKey Clave
RegCloseKey Clave2
End Sub
He compilado el código, y el nod32 me ha saltado y directamente me ha puesto el archivo .exe en curentena. Jejeje....ya era hora que se diera cuenta que era un malware :). La cuestión sería ir quitando cosas hasta ver con lo que salta.
Saludos.


En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #12 en: 6 Marzo 2008, 00:22 am »

Es casi una copia del apiguide......pero con la adaptación al de Hendrix (utilizando la api MessageBox ;)):
Código:
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Const MB_OK = &H0&

Private Sub Form_Load()
    On Error Resume Next
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'We're going to call an API-function, without declaring it!

    Dim lb As Long, pa As Long
    'map 'user32' into the address space of the calling process.
    lb = LoadLibrary("user32")
    'retrieve the address of 'SetWindowTextA'
    pa = GetProcAddress(lb, "MessageBoxA")
    'Call the SetWindowTextA-function
    CallWindowProc pa, Me.hWnd, "hola", "hola", MB_OK
    'unmap the library's address
    FreeLibrary lb
End Sub
nhaalclkiemr te ahorre la traducción  :laugh:. Venga, hacer pruebas que uno ya está un poco cansado del tema :).
PD. El ejemplo del apiguide es practicamente igual, pero utiliza la librería SetWindowTextA en vez de la MessageBoxA. Este ejemplo no me va.....el guindows me da un error y me cierra el vb.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #13 en: 6 Marzo 2008, 01:14 am »

Ahhmm...de esta manera puedo usar APIs sin declararlas antes no? que bien :xD sabía que se podía hacer en C pero no en VB...

Sin embargo me surge una duda...si por ejemplo quisiera adaptar el codigo para en vez de MessageBoxA usar otra API que tiene muchos parametros como estableceria cuales son los parametros?? porque CallWindowsProc tiene 3 o 4 parametros que pasa a la API...pero si necesitara 7 parametros la API a la que quiero llamar, como haría?

Saludos y gracias ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Chefito

Desconectado Desconectado

Mensajes: 122



Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #14 en: 6 Marzo 2008, 03:25 am »

Pufffff......eso lo pensé yo también cuando la vi  :rolleyes:. Pues así de pronto no tengo ni idea. Seguro que se tendrá que tirar de las funciones ocultas del vb de punteros y de las apis para el manejo de memoria (puuuuuuuaaaaafffffffff). Vamos, que yo paso de investigarlo  :P. Aquí me quedo :). Espero que tengas suerte con el tema.
Saludos.
En línea

Moderador del foro oficial de AutoIt en español: www.AutoIt.es.

Todos tenemos inteligencia, lo malo es que algunos no nos acordamos donde la dejamos guardada ;)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #15 en: 6 Marzo 2008, 14:03 pm »

No se recomienda el uso de esa API (CallWindowProc), las pocas veces que la use se me hizo muy inestable  :-\

Un Saludo :)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Saltarse un tipo de heurística
« Respuesta #16 en: 6 Marzo 2008, 15:17 pm »

No se recomienda el uso de esa API (CallWindowProc), las pocas veces que la use se me hizo muy inestable  :-\

Un Saludo :)

mm entiendo, pero en VB no hay function pointer de APIs como en C...

Weno es igual, a lo mejor me sirve alguna vez...

saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines