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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1]
1  Programación / ASM / Programar en MASM sugerencia Diferencia entre MASM y MASM32 en: 28 Julio 2017, 02:41 am
Hola buenas tardes recien encontre en mi biblioteca el libro de "Lenguaje ensablador para computadoras basadas en Intel Quinta Edicion de KIP R. Irvine" ni me acordaba que lo tenia y bueno quiero empezar a programar en este lenguaje alguna sugerencia para un nuevo???
 
Que ensamblador me recomiendan Radasm o de plano me bajo el Microsoft Macro Assembler 8.0 (MASM) ??? 

Alguien me puede decir la diferencia entre MASM y MASM32???

Gracias todos los comentarios son bienvenidos saludos

2  Seguridad Informática / Análisis y Diseño de Malware / Problema al mover Bound Import Problema para copiar y pegar en: 2 Abril 2017, 23:00 pm
Hola amigos viendo los diferentes tutoriales sobre el PE Header el de Ferchu y el de The Swash  ;-) ;-) ;-) me surgio un problema al mover el Bound Import del Tutorial The Swash de la parte "practica #2:"  con un archivo en visual basic que en si es un msgbox nada mas
cito
Citar
¿Hay solución?
Si, te cuento que hay 2 una menos ortodoxa que la otra pero ambas funcionan. Una preservadora y otra no presevadora.

    Primera solución: Yoda(creador de LordPE) alguna vez mencionó que se puede establecer el RVA del directorio BOUND_IMPORT_DIRECTORY a 00 porque este era poco importante. Mi amigo karmany opinó al respecto y estoy de acuerdo con él, este directorio tiene como utilidad optimizar entonces me parece que importa. El ejecutable no deja de funcionar pero no preserva el estado original del ejecutable.
    Segunda solución: Personalmente me parece la mejor y consiste en mover de sitio el BOUND_IMPORT_DIRECTORY. Si sabemos que está justo despues de la última sección, tranquilamente lo desplazamos 0x28 bytes y así tenemos espacio para una función. Posteriormente se actualiza el RVA en el Directorio de datos y lo habríamos solucionado.

Metodo 1 poner en 0     RVA: 0x000,Size: 0x00 correcto hasta aqui

EL PROBLEMA ( seguro es algo bien sencillo lo que me falla )

Cuando muevo 0x28 bytes para mover ahi osea quedaria 0x228 + 0x28 =0x250 vamos al HEX editor PASOS QUE ESTOY SIGUIENDO EN LAS IMAGENES
 PASO 1
Compio los bytes de la bound Import despues me voy 0x28 bytes despues


PASO 2
 y ahi pego los datos posteriomente con el LORD PE cambio el RVA:0x250 pero




Pero me rompe el archivo ahora si tecleo a mano los datos de la Bound Import me jala no me rompe el archivo  alguien sabe si estoy haciendo algo mal en el HEX porque cuando pego veo que me hace mas chico el ARCHIVO de 1 a 4 bytes maximo por los offsets que me muestra al final ya lo pongo en la imagen alguien sabe que podria estar haciendo mal ???
Antes me posiciono al ultimo y me dice que es el offset 4000 despues de pegar los Bytes me dice 3FFB



 Ya Logre mover la Bound Import  pero tecleando todos los datos  a mano en este archivo son 20 pero supongo si quiero modear algo mas grande van a ser mas por eso quiero saber como copiarlos y pegarlos desde el editor HEX



Gracias y Saludos!!!

MOD: Imágenes adaptadas a lo permitido.





3  Programación / Programación C/C++ / Bug en String.h y getline( Eternal Idol, Littlehorse alguien)que opinan? en: 28 Febrero 2014, 18:20 pm
Hola Miren tengo este problema paso la direccion del arreglo d eestructuras para q leea el primer elemento que es codigo(variable de tipo string) pero se va directamente a leer el nombre y no me deja ingresar el codigo  aqui el code q para mi esta bien y es problema del getline podrian echarme una mano ??

#include<iostream>
#include<string.h>

using namespace std;

struct pro{
       string codigo;
       string nombre;
       string descripcion;
       string laboratorio;
       double precio;
       double iva;
       int existencia;
       };

void leer(struct pro *apt)
{
  double IVA = 0.16;
  double total;
      cout<<"Teclea el Codigo "<<endl;
    getline (cin,apt->codigo);/////NO PASA POR AQUI POR LO VISTO
    cout<<"Nombre "<<endl;// PASA DIRECTAMENTE A INGRESAR EL NOMBRE Y EL CODIGO SE LO PASA POR LO HUEV..S
    getline (cin,apt->nombre);
    cout<<"Descripcion: "<<endl;
    getline (cin,apt->descripcion);
    cout<<"Laboratorio: "<<endl;
    getline(cin,apt->laboratorio);
    cout<<"Precio: "<<endl;
    cin>>apt->precio;
    total=(apt->precio*IVA);
    apt->iva=total;
    cout<<"Cuantos ay en existencia"<<endl;
    cin>>apt->existencia;

}


void imprimir(struct pro *ap)
{
cout<<" CODIGO:      "<<ap->codigo<<endl;
cout<<" NOMBRE:      "<<ap->nombre<<endl;
cout<<" DESCRIPCION: "<<ap->descripcion<<endl;
cout<<" LABORATORIO: "<<ap->laboratorio<<endl;
cout<<" PRECIO:      "<<ap->precio<<endl;
cout<<" IVA:         "<<ap->iva<<endl;
cout<<" EXISTENCIA:  "<<ap->existencia<<endl;
}
int main ()
 {
     int n=0;
     pro * apt=0;

cout<<"Numero de elementos"<<endl;
cin>>n;
apt= new pro[n];
for(int i=0;i<n;i++)
{
 leer(&apt);
}
for(int j=0;j<n;j++)
{
 imprimir(&apt[j]);
}

     delete [] apt ;
    return 0;
 }

Saludos Gracias ;D
4  Seguridad Informática / Análisis y Diseño de Malware / [ASM]Cargando la ntdll desde codigo ideal para saltarse algunos hooks olly etc.. en: 19 Noviembre 2010, 15:52 pm
Hace mucho tiempo que ya no estoy programando a si que les dejo un codigo que lo diseñe pensando en saltarme que sea tan facil debuggearte con el olly y otras cosas =D Vale decir que se puede convertir en un loader para exes entre otras cosas pero necesitas arreglar un poco el cargador del IAT =/

Código
  1.  
  2. ;This code work with the relocation table  :P
  3.          Path fix "C:\windows\system32\ntdll.dll"
  4.  
  5. include "win32ax.inc"
  6. struct UNICODE_STRING
  7.        Len dw ?
  8.        MaxLen dw ?
  9.        Buffer dd ?
  10. ends
  11. .data
  12. kernel32 du "kernel32.dll",0
  13. US UNICODE_STRING
  14. nt dd ?
  15. .code
  16. start:
  17.  
  18.  
  19. stdcall ReadFILE,Path
  20.  
  21. stdcall Loader,eax
  22.  
  23. mov [nt],ecx
  24. stdcall GetAddressFunction,ecx,"RtlInitUnicodeString"
  25.  
  26. stdcall eax,US,kernel32
  27.  
  28.  
  29.  
  30.  
  31. invoke MessageBoxW,0,[US.Buffer],0,0
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. invoke ExitProcess,0
  41.  
  42.  
  43. proc GetAddressFunction,pMZ,pApi
  44.  
  45. mov edi, [pMZ]
  46. mov ebx,[edi+0x3c]
  47. mov ebx,[ebx+edi+0x78]
  48. add ebx,edi
  49. mov esi,[0x18+ebx]
  50. mov edx, [0x20+ebx]
  51. add edx,edi
  52. .bucle:
  53. dec esi
  54. cmp esi,0
  55. je .error
  56. mov eax,esi
  57. rol eax,2   ;esi * 4
  58. mov eax,[edx + eax]
  59. add eax,edi
  60. stdcall comparar,[pApi],eax
  61. xor eax,0
  62. jnz  .bucle
  63. mov eax,[0x24+ebx]
  64. add eax,edi
  65. movzx ecx, word[eax + 2*esi]
  66. mov eax, [ebx + 0x1c]
  67. add eax,edi
  68. mov eax, [eax + 4 * ecx]
  69. add eax, edi
  70. .salir:
  71. ret
  72. .error:
  73. xor eax,eax
  74. jmp .salir
  75. endp
  76.  
  77.  
  78. proc comparar ,SRC,DST ;lstrcmp
  79. push edi ecx esi
  80. mov ecx,-1
  81. mov edi,[SRC]
  82. mov al,0
  83. repnz scasb
  84. mov eax,ecx
  85. not eax
  86. mov ecx,eax
  87. mov esi,[SRC]
  88. mov edi,[DST]
  89. repz cmpsb
  90. mov eax,1
  91. jnz Next
  92. dec eax
  93. Next:
  94. pop esi ecx edi
  95. ret
  96. endp
  97.  
  98. SizeOfImage       equ 0x50
  99. pe               equ 0x3c
  100. NumberOfSections equ 0x6
  101. VirtualAddr       equ 0xc
  102. proc Loader uses edx edi esi ebx,MZ
  103.        local PE          dd ?
  104.        local ExeBuffer   dd ?
  105.  
  106.        local Delta       dd ?
  107.        local IBR         dd ?
  108.        local NumberBlocks dd ?
  109.        local I               dd ?
  110.        local IBR2 dd ?
  111.        local Type            dd ?
  112.        local IAT             dd ?
  113.        local offset          dd ?
  114.  
  115.  mov eax,[MZ]
  116.  add eax,dword[eax+pe]
  117.  mov [PE],eax
  118.  
  119. mov eax,[PE]
  120. cmp dword[eax+0x80],0
  121. je _EXIT
  122.  
  123. mov eax,[MZ]
  124. mov eax,dword[eax+0x3c]
  125. add eax, [MZ]
  126. xchg eax,[PE]
  127. mov eax,[PE]
  128. mov eax,dword[eax+0x80]
  129. add eax,[MZ]
  130. mov [IAT],eax
  131.  
  132. _LOADERIAT:
  133.  
  134.  
  135. mov eax,[IAT]
  136. mov eax,dword[eax+12]
  137. add eax,[MZ]
  138.  
  139.  
  140.  
  141. invoke LoadLibrary,eax
  142. mov ebx,eax
  143.  
  144. mov eax,[IAT]
  145.  
  146. mov eax,dword[eax+16]
  147. add eax,[MZ]
  148.  
  149. mov edi,eax
  150. _APIs:
  151.  
  152. mov eax,edi
  153. mov ecx,[MZ]
  154. add dword[eax],     ecx
  155.  
  156. mov eax,dword[eax]
  157. add eax,2
  158.  
  159. invoke GetProcAddress,ebx,eax
  160. mov dword[edi],eax
  161.  
  162. add edi,4
  163. cmp dword[edi],0
  164. jne _APIs
  165.  
  166. add [IAT],20
  167. mov eax,[IAT]
  168.  
  169. cmp dword[eax+12],0
  170. jne _LOADERIAT
  171.  
  172.  
  173.  
  174. _EXIT:
  175. invoke GlobalAlloc,GPTR,dword[eax+SizeOfImage]
  176.      mov [ExeBuffer],eax
  177.  
  178. mov eax,[PE]
  179.  
  180. movzx edi,word[eax+NumberOfSections]
  181.  
  182. _Secciones:
  183. dec edi
  184.  
  185. mov eax,28h
  186. mul edi
  187. add eax,0xf8
  188. add eax,[PE]
  189.  
  190. mov ecx,[ExeBuffer]
  191. add ecx,dword[eax+VirtualAddr]
  192.  
  193.  
  194.  
  195. mov edx,dword[eax+0x14];PointerRawData
  196. add edx,[MZ]
  197.  
  198. invoke RtlMoveMemory,ecx, edx,dword[eax+10h]
  199.  
  200. cmp edi,0
  201. jne _Secciones
  202.  
  203.  
  204. mov eax,[PE]
  205. invoke RtlMoveMemory,[ExeBuffer]   , [MZ]   ,dword[eax+0x54]
  206.  
  207. mov edi,[PE]
  208. mov edi,dword[edi+0x34]
  209.  
  210. mov ecx,[ExeBuffer]
  211.  
  212. sub ecx,edi
  213. mov [Delta],ecx
  214.  
  215. mov esi,[PE]
  216.  
  217. mov eax,[esi+0xA0]
  218. add eax,[ExeBuffer]
  219.  
  220.  mov [IBR],eax
  221.  
  222. _EX:
  223.  
  224. mov eax,[IBR]
  225. add eax,8
  226. mov eax,dword[eax]
  227. and eax,0xff
  228.  
  229. mov ecx,[IBR]
  230. mov ecx,dword[ecx+4]
  231. sub cl,8
  232. mov eax,2
  233. xchg eax,ecx
  234. div ecx
  235. mov [NumberBlocks],eax
  236. inc [NumberBlocks]
  237.  
  238. _Ini:
  239. push [IBR]
  240. pop [IBR2]
  241.  
  242. add [IBR2],6; IBR - WORD
  243. _BLOCKS:
  244. dec [NumberBlocks]
  245.  
  246. add [IBR2],2
  247.  
  248. pushad
  249. mov eax,[IBR2]
  250. movzx eax,word[eax]
  251. mov ecx,eax
  252. shr ecx,12
  253. and eax,0xff
  254. .if ecx = 3
  255.  
  256. ;scfd
  257. mov edx,[IBR]
  258. mov edx,[edx]
  259. add edx,eax
  260. add edx,[ExeBuffer]
  261.  
  262.  
  263.  
  264. mov eax,dword[edx]
  265. add eax,[Delta]
  266.  
  267.  
  268.  
  269. mov dword[edx],eax
  270.  
  271. .endif
  272.  
  273.  
  274. popad
  275.  
  276.  
  277. cmp [NumberBlocks],0
  278. jne _BLOCKS
  279.  
  280. mov eax,[IBR]
  281. mov eax,[eax+4]
  282. add [IBR],eax
  283. mov eax,[IBR]
  284. cmp dword[eax],0
  285. jne _EX
  286.  
  287.  
  288.  
  289. mov eax,[PE]
  290. mov ecx,[ExeBuffer]
  291.  
  292.  
  293.    ret
  294. endp
  295.  
  296. proc ReadFILE, ruta
  297. locals
  298.    bUsados dd ?
  299.    hFile   dd ?
  300.    tamAr   dd ?
  301.    hMap    dd ?
  302.    IB      dd ?
  303. endl
  304.  
  305.    invoke  CreateFile, [ruta], GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0
  306.    mov [hFile], eax
  307.    invoke  GetFileSize, [hFile], 0
  308.    mov [tamAr], eax
  309.    invoke  GlobalAlloc, GPTR, eax
  310.    mov [IB], eax
  311.    invoke  ReadFile, [hFile], [IB], [tamAr], addr bUsados, 0
  312.    invoke CloseHandle,  [hFile]
  313.    mov eax, [IB]
  314.    mov ebx,[tamAr]
  315.    ret
  316. endp
  317.  
  318. .end start;By Me
  319.  

Si quieren sacarle algunas apis es cosa de cambiarlas por funciones =P

Código
  1. ;Descripcion: Esta función funciona igual que la winapi RtlMoveMemory
  2. ; by YST
  3. proc cRtlMoveMemory,cBuffer,Cpuntero,cCantidad
  4. push esi edi
  5. xchg edi,[cBuffer]
  6. xchg esi,[Cpuntero]
  7. .bucleb:
  8. dec [cCantidad]
  9. movsb
  10. cmp  [cCantidad],0
  11. jge .bucleb
  12. pop edi esi
  13. ret
5  Foros Generales / Foro Libre / Mi opinion(Quien fue primero la gallina o el huevo) en: 17 Julio 2010, 21:52 pm
Hola,

leyendo mucho sobre este tema de quien fue primero la gallina o el huevo vi hasta informes que la gallina tenia que ser primero por una proteina, pues yo quiero plantear mi opinion en un medio publico y a ver si algun plantea sus teorias tambien :P

La respuesta es el huevo algunos se preguntaran quien puso el huevo pues un ante pasado de la gallina no una gallina como tal si no que una especie menos evolucionada y de dos padres de un ave anterior nace lo que conocemos hoy en dia como una gallina mediante un  huevo.
6  Seguridad Informática / Análisis y Diseño de Malware / Falla keylogger Poison ivy en: 26 Junio 2010, 23:01 pm
Alguien le falla el keylogger  del Poison ivy en win vista o win7 ?

Si es a si porfavor me pueden hacer una copia de su poison pero que conecte a localhost

PD: Es para el analisis depòr que falla ya que yo no logro que me falle y existen muchos que dicen que falla :S
7  Programación / Ingeniería Inversa / Parcheando el Alcohol 120% 2.0 en: 20 Mayo 2010, 00:33 am
Parcheando el Alcohol 120% 2.0




  • ¿Que se planea lograr con este parche?


    Lo que se planea es que nunca caduque el modo de prueba ( TRIAL ) .


  • Tutorial


    Lo primero que haremos y que es bueno siempre hacerlo cuando se planee crackear algún programa es ver si esta enpaquetado con algún packer , para esto utilizaremos el peid(web) .





    Como vemos en el peid esta empaquetado con el UPX , existen varias opciones para desempaquetarlo yo usare el PE Explorer (web) con este p`rograma solo abrimos nuestro exe ( el alcohol ) y este se desempaqueta automaticamente y luego lo guardamos con el nombre Alchol_UNPACK.exe .


    Ejecutamos el alcohol  ( el empaquetado o el desempaquetado da igual) luego cambiamos la fecha de nuestro sistema y la adelantamos un año esto lo haremos para vencer el modo de prueba  , lo volvemos a ejecutar y nos saltara un mensaje como el siguiente




    Ya teniendo el exe desempaquetado lo abrimos con una muy buena modificación del olly dbg que es el Olly Shadow( DESCARGAR ) , para obtener donde dice el programa que estamos vencidos usaremos de guia el mensaje anterior por lo tanto pondremos un "BP MessageBoxW" en la barra de comandos y le damos a enter .


    Veremos que para cuando llama a MessageBoxW comprobamos que el mensaje sea el mismo que nos muestro si no es apretamos F9



    pero en el caso de ser vamos apretando F8 hasta que nos encontremos en el espacio de memoria del exe y no de la dll y llegaremos a un codigo como este



    analizamos un poco el codigo anterior al MessageBox hasta encontrarnos con unos saltos condicionales sospechosos , les pondremos un break point con F2 al test al,al y volveremos a lanzar el exe en este momento el exe parara en el BP y segurimos el anlaisis con F8 vemos que el JNZ luego del test al,al saltan al bloque cercano del codigo del MessageBox a si que cambiaremos la condición a JZ y le damos a F9 y EUREKA!!! nos muestra todo como si fuera dentro del plazo :P



    Saltos sospechosos:

    Código
    1. /*43A181*/  TEST AL,AL
    2. /*43A183*/  JNZ SHORT Alcohol_.0043A1A4
    3. /*43A185*/  MOV ECX,DWORD PTR SS:[EBP-134]
    4. /*43A18B*/  CMP ECX,0F
    5. /*43A18E*/  JG SHORT Alcohol_.0043A1A4
    6. /*43A190*/  FLD QWORD PTR SS:[EBP-13C]
    7. /*43A196*/  CALL Alcohol_.0063D450
    8. /*43A19B*/  CMP EAX,0F
    9. /*43A19E*/  JLE Alcohol_.0043A434
    10.  
    11.  





    SE NECESSITA ELIMINAR LA CARPETA LENGS
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines