|
1
|
Programación / Ingeniería Inversa / Re: Armadillo 4.05
|
en: 27 Enero 2016, 12:51 pm
|
La idea es llegar a ver un MessageBox que tira, y la condicion en la que la tira.. En si el programa tiene un lock por hardware id que me gustaria poder hacer un keygen, y si, estoy siguiendo unos tutos.. Igualmente me fui a registrar en Tuts4you (estaba usando lo que estaba disponible sin registracion) y me quede colgado donde dice decode this string, al principio pense que era ASCII de algo, pero medio como que no era EDIT: no dije nada, ya vi que es octal EDIT2: Voy a probar el script en OllyDBG2, como adelante, por algun motivo, OllyDBG 1.10 crashea con el programa, vanilla, sin hacer nada, y con proteccion anti-anti-debugging puesta por algunos plugins
|
|
|
2
|
Programación / Ingeniería Inversa / Armadillo 4.05
|
en: 27 Enero 2016, 11:53 am
|
Hola muchachos, me he tomado un proyecto un poco personal. He encontrado una aplicación que usa Armadullo 4.05, reportado por Armadillo Inspector. El programa en cuestion, por algun motivo, no corre en mi maquina virtual con Windows XP 32bits en Ollydbg 1.10, asique tengo que usar OllyDBG 2.X He cargado el OllyExt para colocar el parche anti isDebuggerPresent, y Odbgscript para ejecutar los scripts de OllyScript (son del todo compatibles?) Consegui un script de Ricardo para el desempaquetado desde tuts4you, y otro par mas para lo mismo, pero nunca llego al messagebox que deberia decirme que fallo o que tuvo exito.. Cargo el ejecutable, ejecuto el script. Cargo el ejecutable, lo ejecuto y luego ejecuto el script. Siempre habiendo puesto las excepciones que dice Ricardo en el text file, y siempre con el isDebuggerPresent parcheado, pero aun asi, nunca llego al resultado. Que estoy haciendo mal? Que informacion puedo aportar para ayudarme a ayudarlos con mi problema? Saludos! EDIT: Mi problema esta cuando el script ejecuta el programa, cuando salgo del programa se me va al modulo ntdll, y no hay mensaje ni nada. He ido a la ventana del script y dado que ejecute mas alla de la instruccion 'run' pero sigo sin entender como proseguir. Adjunto el script en caso de que alguien quiera verlo.. /* DETACH FARTHER - METHOD RICARDO - VER 0.1 AUTHOR: BENINA Modified hipu' Script by BENINA (HTTP://REAONLINE.NET/FORUM)
Armadillo script - detach parent from client and unpack (1000 bytes method Ricardo)
Debugging Option: Ignore custom exceptions: 0EEDFDE;C0000001..C0009898;80000004
hipu said:
MAKE SURE ALL BREAKPOINTS ARE DELETED BEFORE EXECUTING THE SCRIPT!!!
ALSO: since im using the IsDebuggerPresent plugin, i didnt do IsDebuggerPresent patch. do whatever is needed if u dont use the plugin...
Thanz to Ricardo,Tenketsu and hipu
*/
////////////////////////// // To declare vars /////////////////////////
var WaitForDebugEvent var WriteProcessMemory var pDebugEvent var pBuffer var child_ProcID var oep_offset1 var oep_offset2 var oep_offset3 var crypto_proc var child_OEP var patched_line1 var imgbase var rdata_begin var text_begin var text_patch var tb_report1 var tb_report2 var tb_report3 var tb_report4 var tb_report5 var tb_report6 var addr_1000 var buffer_1000 var temp var temp1
////////////////////////////////////// // Find rdata_begin or (data_begin) /////////////////////////////////////
gmi eip,MODULEBASE mov imgbase, $RESULT mov rdata_begin, imgbase find rdata_begin, #4441544100# //find "DATA" string cmp $RESULT,0 jne lbcontinue
find rdata_begin, #2E726461746100# //find ".rdata" string cmp $RESULT,0 jne lbcontinue
find rdata_begin, #2E6461746100# //find ".data" string cmp $RESULT,0 jne lbcontinue jmp no_run_script lbcontinue: mov rdata_begin, $RESULT add rdata_begin, 0c mov rdata_begin, [rdata_begin] add rdata_begin, imgbase log rdata_begin
///////////////////////////////// // Find text_begin ////////////////////////////////
gmi eip,MODULEBASE mov imgbase, $RESULT mov text_begin, imgbase find text_begin, #434F444500# //find "CODE" string cmp $RESULT,0 jne lbcontinue2
find text_begin, #2E7465787400# //find ".text" string cmp $RESULT,0 jne lbcontinue2 jmp no_run_script
lbcontinue2:
mov text_begin, $RESULT add text_begin, 0c mov text_begin, [text_begin] add text_begin, imgbase log text_begin
///////////////////////////////////////////////////// //eob found_WaitForDebugEvent WriteProcessMemory ////////////////////////////////////////////////////
gpa "WaitForDebugEvent", "kernel32.dll" mov WaitForDebugEvent, $RESULT gpa "WriteProcessMemory", "kernel32.dll" mov WriteProcessMemory, $RESULT
/////////////////////////////////////// //Armadillo check bp first 5 bytes so: ///////////////////////////////////////
add WriteProcessMemory,5 bp WriteProcessMemory run bc WriteProcessMemory sub WriteProcessMemory,5
////////////////////////////////////////////// //Get infomation at bp Call WaitForDebugEvent /////////////////////////////////////////////
bp WaitForDebugEvent run bc WaitForDebugEvent
mov pDebugEvent, esp add pDebugEvent, 04 mov pDebugEvent, [pDebugEvent] log pDebugEvent
mov oep_offset1, pDebugEvent add oep_offset1, 18 mov oep_offset2, pDebugEvent add oep_offset2, 24 mov oep_offset3, pDebugEvent add oep_offset3, 28
//////////////////////////////////////// // Find Child_ProcID and child_OEP ///////////////////////////////////////
bp WriteProcessMemory run bc WriteProcessMemory
mov child_ProcID, pDebugEvent add child_ProcID, 4 mov child_ProcID, [child_ProcID] mov child_OEP, [oep_offset1]
/////////////////////////////////// //Save info Table report ///////////////////////////////////
mov tb_report1,[pDebugEvent]
mov tb_report2,pDebugEvent add tb_report2,4 mov tb_report2,[tb_report2]
mov tb_report3,pDebugEvent add tb_report3,8 mov tb_report3,[tb_report3]
mov tb_report4,pDebugEvent add tb_report4,C mov tb_report4,[tb_report4]
mov tb_report5,pDebugEvent add tb_report5,10 mov tb_report5,[tb_report5]
mov tb_report6,pDebugEvent add tb_report6,14 mov tb_report6,[tb_report6]
//////////////////////////////////////////////////// //Get info in stack at bp Call WriteProcessMemory ///////////////////////////////////////////////////
mov addr_1000,esp add addr_1000,8 mov addr_1000,[addr_1000] log addr_1000
mov buffer_1000,esp add buffer_1000,C mov buffer_1000,[buffer_1000] log buffer_1000
///////////////////////////////// //Patch OEP of Son to EBFE /////////////////////////////////
mov temp,child_OEP sub temp,addr_1000 add temp,buffer_1000 mov temp1,[temp]
and temp1,FFFF eval "Bytes patched at OEP of Son (to invert the bytes order) : {temp1}" msg $RESULT log $RESULT
fill temp,1,eb add temp,1 fill temp,1,fe
/////////////////////////// // FIND ENCRYPTOR ///////////////////////////
mov crypto_proc, esp add crypto_proc, 128 mov crypto_proc, [crypto_proc] add crypto_proc, 2d0 mov [crypto_proc], #9090909090# rtr //ctrl-f9 sto //f8
/////////////////////// //Log info to win log //////////////////////
log "crypto_proc was nopped..." log "patched OEP of child process to EBFE" log child_ProcID log child_OEP
log "press script/resume when ready" eval "Patched successful OEP={child_OEP} of child process (PID= {child_ProcID}) to EBFE !!!!.More Info in Window Log.Press button OK to continues!" msg $RESULT
//////////////////////////////////////////////////////////////// //Patch jump to section .text and NOPs call WaitForDebugEvent ///////////////////////////////////////////////////////////////
bp WaitForDebugEvent run bc WaitForDebugEvent
mov patched_line1, [esp] sub patched_line1, 12
fill patched_line1, 12, 90 add patched_line1,14
eval "jmp {text_begin}" asm patched_line1,$RESULT
add patched_line1,5 eval "NOP" asm patched_line1,$RESULT
////////////////////////////////////// //Patch in section .text (or CODE) //////////////////////////////////////
mov text_patch, text_begin
eval "add dword [{oep_offset1}],1000" asm text_patch,$RESULT
add text_patch,A eval "add dword [{oep_offset2}],1000" asm text_patch,$RESULT
add text_patch,A eval "add dword [{oep_offset3}],1000" asm text_patch,$RESULT
add text_patch,A eval "cmp dword [{oep_offset3}],{rdata_begin}" asm text_patch,$RESULT
add text_patch,A eval "jnz {patched_line1}" asm text_patch,$RESULT
add text_patch,6 eval "push {child_ProcID}" asm text_patch,$RESULT
add text_patch,5 eval "CALL DebugActiveProcessStop" asm text_patch,$RESULT
add text_patch,5 eval "NOP" asm text_patch,$RESULT
////////////////////////////// //Patch in Table report at : //////////////////////////////
sub text_begin,1000 mov [oep_offset1], text_begin mov [oep_offset2], text_begin mov [oep_offset3], text_begin
////////////////////////////////// //go [esp](New origin here) /////////////////////////////////// mov eip, [esp]
////////////////////////// // Set bp F2 at /////////////////////////
bp text_patch run bc text_patch
msg "Successful!.Close OllyDbg, execute again and attach to your newely created process.More Info in Window Log. Have fun." jmp theend
////////////////////////////////// no_run_script: msg "This srcipt don't run with this file. Plz Close Olly.Sorry!"
/////////////////////////////// theend: ret
|
|
|
4
|
Foros Generales / Dudas Generales / Re: Problema de compatibilidad con ficheros de texto
|
en: 26 Diciembre 2015, 14:47 pm
|
En Windows, el final de linea es CRLF (\r\n) En Linux es simplemente \n
Existen multiples soluciones, pero todo se reduce a usar la que la herramienta de edicion de texto que uses distinga entre el formato DOS y el formato UNIX, y seguramente te den la opcion para guardar con las diferencias.
De hecho casi me atrevo a decir que debe de ser una version vieja del editor de texto que estas usando, porque por experiencia, en Gentoo ~arch al menos, tanto nano, como vim, como ed, reconocen automaticamente la sintaxis del archivo SI tiene una extension.
|
|
|
6
|
Foros Generales / Dudas Generales / Re: Boot device not found
|
en: 26 Diciembre 2015, 14:42 pm
|
Y en la BIOS, tenes puesto para que bootee el orden? O sea, capaz que tocaste para cambiar el orden de booteo y tu Acer sea de las que agrupan todas las unidades de disco, de forma que te este buscando siempre el pendrive, o que el grupo discos haya quedado vacio, y sea por eso que no lo encuentra? Yo creeria que seria bueno que nos pusieras un pantallazo/imagen aunque sea con el celular de las opciones de la BIOS para ver que pasa. En un dato relacionado, para no perder los datos, si podes usar Kali, podes usar cualquier distro de Linux para copiarlas o bien a otra particion, o a un disco externo, o a un pendrive.
|
|
|
7
|
Foros Generales / Dudas Generales / Re: ¿Se puede saltar esta limitación de tráfico web?
|
en: 26 Diciembre 2015, 14:39 pm
|
Permiso, vengo a poner dos centavitos.. Creo que el scrapper de jDownloader para el mismo sitio no tiene el problema, seria bueno revisarlo para ver que implementa y portarlo.. No obstante, si puede ser que la cookie tenga algo que ver, no probaste que pasa si no envias la cookie directamente? Probablemente dispare el recaptcha, y con un valor "fruta" en la cookie? Si la cookie no esta registrada probablemente genere el recaptcha pero de no estar esta validacion probablemente produzca el efecto deseado ("pensar que no es un cliente con datos guardados server-side"). Por otro lado, se me ocurre que de ser una restriccion del tipo por IP, podrias usar un proxy cada X numero de scraps, de esta forma y generando una nueva cookie por cada IP, si bien mas lento por la latencia, deberias poder evitar esa traba.. Tambien checkear que User-Agent estas usando, porque probablemente tenga alguna lista negra o tal..
|
|
|
|
|
|
|