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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  SRCs de YST.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 6 7 8 9 Ir Abajo Respuesta Imprimir
Autor Tema: SRCs de YST.  (Leído 34,148 veces)
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: [SRC]GetAddressFunction
« Respuesta #20 en: 4 Abril 2009, 01:08 am »

A y no entiendo el porque de tanto "push" y "pop"
No es mas facil hacer mov a un registro

La razón principal es que quise que se explicara un poco el code mediante las variables  y no se puede hacer un "mov  [AddressOfNames].dword[ebx+20h] " esa es la razón , aunque facilmente se pueden eliminar todas las variables.
y no se puede hacer mov de mem a mem pero creo que era mas rapido de mem a reg que hacer push mem y ala inbersa. ya te digo que yo no mido la velocidad, pero como de todas maneras tienes que pasarlo a un registro para usarlo
tengo ese code con una sola variable.

Y para explicar el code puedes poner comentarios diciendo lo que haces y a donde apunta.

En esa comunidad no somos muchos los que siempre escribimos, por eso suele haber buen nivel en lo que se postea

Saludos


En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [SRC]GetAddressFunction
« Respuesta #21 en: 4 Abril 2009, 02:17 am »

Arregle un poco el coidigo ( lo que se puede arreglar estnado cansado ) , mañana si gustan lo termino de arreglar.
salu2


Código
  1. proc GetAddressFunction,LibHandle,Api
  2. locals
  3. AddressOfNames dd ?
  4. AddressOfFunctions dd ?
  5. endl
  6. push ebx  edx  edi  ecx    esi
  7. mov eax,[LibHandle]
  8. cmp eax,NULL
  9. je .Error
  10. mov ebx, dword[eax + 03Ch]
  11. add ebx,eax
  12. cmp word[ebx],"PE"
  13. jne .Error
  14. mov esi,dword[ebx+078h]
  15. mov ebx,esi
  16. add ebx,eax
  17. push dword[ebx+20h]
  18. pop [AddressOfNames]
  19. add    [AddressOfNames] ,eax
  20. mov ecx,dword[ebx+018h]
  21. mov edi,0
  22. mov ebx,esi
  23. add  eax ,ebx
  24. push   dword[eax+1ch]
  25. pop [AddressOfFunctions]
  26.  
  27. .encontrar:
  28. dec ecx
  29. mov eax, 0x4
  30.  mul edi
  31. mov ebx,eax
  32. add ebx,[AddressOfNames]
  33.  mov eax, [ebx]
  34. add eax, [LibHandle]
  35. inc edi
  36.  stdcall comparar, [Api], eax
  37.  cmp ecx,NULL
  38.  je .Error
  39.  cmp eax, 0
  40. jne .encontrar
  41. dec edi
  42. rol edi,2
  43. mov eax,edi
  44. add eax, [AddressOfFunctions]
  45. add eax,[LibHandle]
  46. mov eax, dword[eax]
  47. add eax,[LibHandle]
  48. pop  esi ecx edi edx ebx
  49. ret
  50. .Error:
  51. xor eax,eax   ; xor eax,eax = NULL
  52. pop  esi ecx edi edx ebx
  53. ret
  54. ret
  55. endp
  56. proc comparar ,SRC,DST
  57. push edi ecx esi
  58. stdcall Len,[SRC]
  59. inc eax
  60. mov ecx,eax
  61. mov esi,[SRC]
  62. mov edi,[DST]
  63. repz cmpsb
  64. mov eax,1
  65. jnz Next
  66. dec eax
  67. Next:
  68. pop esi ecx edi
  69. ret
  70. endp
  71.  
  72. proc Len , SRC
  73. push ecx edi
  74. mov ecx,-1
  75. mov edi,[SRC]
  76. mov al,0
  77. repnz scasb
  78. mov eax,ecx
  79. not eax
  80. dec eax
  81. pop edi ecx
  82. ret
  83. endp


« Última modificación: 31 Mayo 2009, 03:56 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: [SRC]GetAddressFunction
« Respuesta #22 en: 4 Abril 2009, 02:30 am »

mi code es este, es masm pero tanpoco cambia tanto.

Código
  1. Getproadress proc PBaseDll:dword, PNombreFun:dword
  2. LOCAL NumFun
  3. push edx
  4. push ecx
  5. push esi
  6. push edi
  7.  
  8.  
  9. mov edx,[PBaseDll] ;Encontrar funcion pedida en la dll especificada
  10. cmp word ptr[edx],'ZM'
  11. je MZ
  12. cmp word ptr[edx],'MZ'
  13. je MZ
  14. NoPE:
  15. xor eax,eax
  16. jmp NoEncontre
  17. MZ:
  18. xor ecx,ecx
  19. add edx,[edx+3ch]
  20. cmp word ptr[edx],'EP'
  21. jne NoPE                           ;Cabecera PE
  22. mov edx,[edx+78h]
  23.  
  24. ;Tabla de Exportaciones
  25. mov edi,[18h+edx]
  26. mov [NumFun],edi
  27. add edx,[PBaseDll]    
  28. mov edi,[edx+20h]                 ;AddressOfNames
  29. add edi,[PBaseDll]
  30. jmp busca
  31. NoEs:
  32. cmp ecx,[NumFun]
  33. je NoEncontre
  34. inc ecx
  35. add edi,4
  36. busca:
  37. mov esi,[edi]
  38. add esi,[PBaseDll]
  39. push esi
  40. push [PNombreFun]
  41. call cmpsrt
  42. cmp eax,0
  43. jne NoEs
  44. ;                                AddressOfNameOrdinals
  45. mov edi,[edx+24h]
  46. add edi,[PBaseDll]
  47. rol ecx,1h
  48. add edi,ecx
  49. movzx ecx,word ptr [edi]
  50.  
  51. ;                                AddressOfFunctions
  52. rol ecx,2h
  53. mov esi,dword ptr [edx+1ch]
  54. add ecx,[PBaseDll]
  55. add ecx, esi
  56. mov eax,[ecx]
  57. add eax,[PBaseDll]
  58. jmp bien
  59. NoEncontre:
  60. xor eax,eax
  61. bien:
  62. pop edi
  63. pop esi
  64. pop ecx
  65. pop edx
  66.  
  67. ret 8
  68.  
  69. Getproadress endp
  70.  
  71.  
  72.  
  73.  
En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [SRC]GetAddressFunction
« Respuesta #23 en: 4 Abril 2009, 03:11 am »

Le corregi algunas cosas inutiles , no son muchas modificaciones las que le hice a mis source pero creo que lo debo postear igual

Código
  1. include 'win32ax.inc'
  2. .code
  3. start:
  4. invoke LoadLibrary,"user32.dll"
  5. stdcall  GetAddressFunction,eax,"MessageBoxA"
  6. stdcall eax,0,0,0,0
  7. invoke ExitProcess,0
  8. proc GetAddressFunction,LibHandle,Api
  9. locals
  10. AddressOfNames dd ?
  11. AddressOfFunctions dd ?
  12. endl
  13. push ebx  edx  edi  ecx    esi
  14. mov eax,[LibHandle]
  15. cmp eax,NULL
  16. je .Error
  17. mov ebx, dword[eax + 03Ch]
  18. add ebx,eax
  19. cmp word[ebx],"PE"
  20. jne .Error
  21. mov esi,dword[ebx+078h]
  22. mov ebx,esi
  23. add ebx,eax
  24. push dword[ebx+20h]
  25. pop [AddressOfNames]
  26. add    [AddressOfNames] ,eax
  27. mov ecx,dword[ebx+018h]
  28. xor edi,edi
  29. add  eax ,esi
  30. push   dword[eax+1ch]
  31. pop [AddressOfFunctions]
  32. sub eax,esi
  33. add [AddressOfFunctions] ,eax
  34. .encontrar:
  35. dec ecx
  36. mov eax,edi
  37. rol eax,2
  38. add eax,[AddressOfNames]
  39.  mov eax, dword[eax]
  40. add eax, [LibHandle]
  41. inc edi
  42.  stdcall comparar, [Api], eax
  43.  cmp ecx,NULL
  44.  je .Error
  45.  cmp eax, 0
  46. jne .encontrar
  47. dec edi
  48. rol edi,2
  49. mov eax,edi
  50. add eax, [AddressOfFunctions]
  51. mov eax, dword[eax]
  52. add eax,[LibHandle]
  53. pop  esi ecx edi edx ebx
  54. ret
  55. .Error:
  56. xor eax,eax   ; xor eax,eax = NULL
  57. pop  esi ecx edi edx ebx
  58. ret
  59. endp
  60. proc comparar ,SRC,DST
  61. push edi ecx esi
  62. mov ecx,-1
  63. mov edi,[SRC]
  64. mov al,0
  65. repnz scasb
  66. mov eax,ecx
  67. not eax
  68. mov ecx,eax
  69. mov esi,[SRC]
  70. mov edi,[DST]
  71. repz cmpsb
  72. mov eax,1
  73. jnz Next
  74. dec eax
  75. Next:
  76. pop esi ecx edi
  77. ret
  78. endp
  79. .end start
« Última modificación: 31 Mayo 2009, 03:56 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
[SRC]antiemulator
« Respuesta #24 en: 4 Abril 2009, 10:15 am »

Hola ,  decidi pasar la función AntiEmulaters desarrollada por ChainCoder en el lenguaje de programación delphi a ASM , espero que les sirva

Codigo original:

Código
  1. Function AntiEmulaters:Boolean;
  2. Var
  3. UpTime            :DWORD;
  4. UpTimeAfterSleep  :Dword;
  5. Begin
  6.   UpTime  := GetTickCount;
  7.   Sleep(Strtoint('5'+'0'+'0'));
  8.   UpTimeAfterSleep := GetTickCount;
  9.   if ( UpTimeAfterSleep - UpTime ) < 500 Then
  10.   Result:= True Else Result:= False;
  11. end;
  12.  
  13.  
Codigo traducido:

Código
  1.  
  2. antiemulator:
  3. push ebx ecx
  4. invoke GetTickCount
  5. mov ebx,eax
  6. mov eax,2
  7. mov ecx,250
  8. mul ecx
  9. invoke SleepEx,eax,FALSE ; 250 * 2= 500 ( para confundir un poco el antivirus )
  10. invoke GetTickCount
  11. sub eax,ebx
  12. cmp eax,500
  13. jl .si
  14. mov eax,FALSE
  15. pop ecx ebx
  16. ret
  17. .si:
  18. pop ecx ebx
  19. mov eax,TRUE
  20. ret
  21.  
« Última modificación: 31 Mayo 2009, 03:57 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [SRC]antiemulator
« Respuesta #25 en: 4 Abril 2009, 14:11 pm »

Creo que al poner:
Código:
125*2*2
No confundes a ningun AV... ya que el FASM ya te lo calcula y pone el 500, talvez haciendo otras cosas, como por ejemplo esto, si que marees mas al AV:
Código
  1.    xor ebx, ebx
  2.    mov ecx, 500
  3. @@: inc ebx
  4.    loop @B

Creo que tendrias que explicar que la mayoria de Emuladores de los AVs se saltan algunas APIs... como esta... asi que, los AVs no duermen :xD

Saludos ;)
En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [SRC]antiemulator
« Respuesta #26 en: 4 Abril 2009, 21:01 pm »

Cita de:  Karcrack en 04 Abril 2009, 14:11
Creo que al poner:

Código:
125*2*2
No confundes a ningun AV... ya que el FASM ya te lo calcula y pone el 500, talvez haciendo
Cierto , no me habia fijado .
« Última modificación: 31 Mayo 2009, 03:58 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
BEATMASTER

Desconectado Desconectado

Mensajes: 153



Ver Perfil WWW
Re: [SRC] Listar funciones de una libreria
« Respuesta #27 en: 5 Abril 2009, 06:35 am »

oorale que bien suena esto recientemente empeze a tener curiosidad de como sacar las funciones de una dll :P y mira con lo que me vengo a encontrar jaja servira de mucho sobre todo apra darme una idea de como lo ahces mm una pregunta :p te devulve el nombre de las funciones y tambien que parametros y valores devuelve? por cierto muy buenos codigos   ;-)
En línea

YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [SRC] Listar funciones de una libreria
« Respuesta #28 en: 5 Abril 2009, 08:54 am »

Los parametros de las api's sera imposible de sacar y los valores que devuelve , no no lo toma ya que hay la unica manera que encuentro es ahcel algo como un debugger y ver que manda a eax .
« Última modificación: 31 Mayo 2009, 03:59 am por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: [SRC] Listar funciones de una libreria
« Respuesta #29 en: 5 Abril 2009, 16:40 pm »

el peso de los parámetros se podría sacar mirando los mov X ,[ebp + X], pero el tipo de valor debuelto no, porque en asm esencialmente solo hay unos pocos tipos, según el tamaño y punteros.

saludos
En línea

Páginas: 1 2 [3] 4 5 6 7 8 9 Ir Arriba Respuesta Imprimir 

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