Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: 02k0 en 12 Agosto 2017, 03:49



Título: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 12 Agosto 2017, 03:49
Buenas noches me quedé dos años sin estudiar nada de ingeniería inversa (por problemas personales) y hace 3 días atrás, volví a estudiar el curso de ricardo narvaja. En este mismo período copié un software e intenté cambiar las strings a mi idioma (Pt-bR), pero no aparecen ninguna string, este software fue alterado por un alemán experto en craqueo, no sé el método que utilizó para ocultar las strings, En fin no hago ni idea para encontrarlas. También tengo una versión antigua de este mismo software (pura, antes de ser cambiada) y cuando busco por las referencias, nada! Las strings aparecen cero. Las nuevas secciones también creadas por la persona que cambió el software también están con los bytes en cero.

Version sin cambios:
(https://s8.postimg.org/86a0yqwsl/Org.png)

Version Cambiada:

(https://s8.postimg.org/q7okit1fp/Mod.png)

También cuando intento cambiar cualquier instrucción en el software, me aparece un mensaje de error:
(https://s8.postimg.org/jspjm4upx/Error.png)

¿Alguien puede opinar al respecto?

Bueno, ya hace un tiempo que estoy sin estudiar nada, sé que debería estudiar antes de hacer esta pregunta, pues esto no parece ser sencillo de resolver, pero...


Saludos :P!!!



Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: tincopasan en 12 Agosto 2017, 05:20
¿analizaste el soft para ver si tiene algún packer? tiene pinta de estar con alguno.


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 13 Agosto 2017, 17:50
Bueno he pasado a infoPE y queda una version estraña de Armadillo:

(https://s12.postimg.org/96iixrtgt/Pack.png)

conoce algun script de esto armadillo?


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 14 Agosto 2017, 05:10
es mucho mas facil que uses armaggedon en windows xp  para desempacarlo, a que lo desempaques...
en general yo podria desempacarlo, pero tampoco se que me pueda enfrentar..por el poco tiempo que pillo armadillos jeje

una vez desempacado, es editar a gusto lo que gustes..Si tu idea es solo inlinear puedes usar tools como la creada por mr.exodia llamada akt (armadillo keygen tool, osea tambien puedes keygenear..) pero es tema de conocimiento

saludos Apuromafo
pd: he escrito algunos escritos de armadillo , pero no he apuntado todo aun por temas de tiempo

aqui te dejo una de ejemplo
http://ricardonarvaja/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1501-1600/1576-Armadillo%209%20flowcode%20Tute%2017-07-15%20by%20Apuromafo.docx


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 15 Agosto 2017, 03:06
Muy bueno, Apuromafo mi intención es realmente desempaquetar el software porque pretendo estudiar las modificaciones hechas por el cracker que cambió el software. La idea de traducirlo es porque pretendo distribuirlo a algunos amigos que no entienden bien el idioma inglés y que tampoco pueden pagar por él.
Si no es abusar demasiado usted podría chequear el software?
Voy a leer su Tutorial para aclarar las ideas. También haré dualboot para usar winxp en mi máquina.

En el siguiente enlace dejé el software en cuestión y también el serial de activación del mismo.


Enlace: https://www.4shared.com/zip/3MGPLXBica/RM2k3-v111.html

En el caso de que usted se interesa en instalar el software para cheque, debe habilitar también las opciones de TLS en Internet Explorer para evitar error la hora de activar el software (bueno sé que es ridículo pedir a un cracker utilizar un serial, pero bueno, todavía estoy aprendendo a crackear).

Saludos!


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 15 Agosto 2017, 08:01
pues en general todo programa tiene sus herramientas,
bajado el programa (main) descompreso con 7zip, ,luego instalado el de accesorios..al parecer no tiene exes o es la mascara..? bueno
comienzo sabiendo la version:(armaversion.osc) disponible en mi github

en general es de los pocos armadillo que no usa debugblocker :O

---------------------------
MSG ODbgScript
---------------------------
Armadillo Version = 9.64
---------------------------
Aceptar   Cancelar  
---------------------------


aqui te presento un log como se ve desempacando.
OS--> Microsoft, 64-bit (build
9200)
<------- 08/15/2017 02:21:12 ------->
Loading target:
rpg2003.exe
Process ID: 18B8
Processing target...
==========================================
IAT Fixed Redirection Disabled!
VM address: 042BE290
VM variable: 0435CA20
==========================================
IAT Variable Redirection Disabled!
VM address: 04219CED
VM variable: 04345284
==========================================
No splices found.
==========================================
Dumping target...
Dump done!
Saved to: rpg2003_unpacked.exe
==========================================
Rebuilding Imports...
Rebuilding Imports completed
Return code: 0
Now, you should test your target. Good luck :)
==========================================
IAT RVA: 001931A4
IAT Size: 000007F8
OEP VA: 00406CEC
OEP RVA: 00006CEC
OEP call return VA: 005B7CD3
Exit Process ID: 18B8


en general esto significa que ha desempacado, pero que tenga un return va significa que no pilló el oep real..
solo basta ejecutar el programa en el depurador (sin que sea detectado) bp en CreateThread, al retornar..buscar mas abajo el cal ebx (es casi a 2 scroll de abajo)
el oep real es
005B7000 | E9 BB 0C 00 00            | jmp rpg2003.5B7CC0                             |
este salta a otra direccion eso si::

a
005B7CC0 | 55                        | push ebp                                       |
005B7CC1 | 8B EC                     | mov ebp, esp                                   |
005B7CC3 | 83 EC 04                  | sub esp, 0x4                                   |
005B7CC6 | 53                        | push ebx                                       |
005B7CC7 | 56                        | push esi                                       |
005B7CC8 | 57                        | push edi                                       |
005B7CC9 | 68 70 7D 5B 00            | push rpg2003_unpacked_1b7cc0 _no oep.5B7D70    | 5B7D70:"kernel32"
005B7CCE | E8 19 F0 E4 FF            | call <rpg2003_unpacked_1b7cc0 _no oep.GetModul |
005B7CD3 | 68 79 7D 5B 00            | push rpg2003_unpacked_1b7cc0 _no oep.5B7D79    | 5B7D79:"VirtualProtect"
005B7CD8 | 50                        | push eax                                       |
005B7CD9 | E8 1E F0 E4 FF            | call <rpg2003_unpacked_1b7cc0 _no oep.GetProcA |
005B7CDE | 8D 55 FC                  | lea edx, dword ptr ss:[ebp - 0x4]              |
005B7CE1 | 52                        | push edx                                       |
005B7CE2 | 6A 40                     | push 0x40                                      |
005B7CE4 | 68 00 00 10 00            | push 0x100000                                  |
005B7CE9 | 68 00 70 5B 00            | push rpg2003_unpacked_1b7cc0 _no oep.5B7000    |
005B7CEE | FF D0                     | call eax                                       |
005B7CF0 | 68 88 7D 5B 00            | push rpg2003_unpacked_1b7cc0 _no oep.5B7D88    | 5B7D88:"ultimate_eb.dll"
005B7CF5 | E8 BA F0 E4 FF            | call <rpg2003_unpacked_1b7cc0 _no oep.LoadLibr |
005B7CFA | 85 C0                     | test eax, eax                                  |
005B7CFC | 0F 85 0A 00 00 00         | jne rpg2003_unpacked_1b7cc0 _no oep.5B7D0C     |
005B7D02 | 68 98 7D 5B 00            | push rpg2003_unpacked_1b7cc0 _no oep.5B7D98    | 5B7D98:"The required file \"ultimate_eb.dll\" could not be found! You might need to reinstall RPG Maker 2003."


en general, valida que esten las dll del programa, antes de llegar a ejecutar propiamente tal el programa...asi que si lo cambio a ese entrypoint (voilá...corre unpacked), se puede cambiar tambien al jmp lugar, pero siento que le queda mejor ese oep xD

lo comprimi en winrar , asi que espero que te sirva
http://rgho.st/7Hlv2Bx76


insisto, no he visto nada mas que quitar el packer..

se ve que es un delphi y puedes por lo cual usar idr , pexplorer, resource hacker y otros para editar

Saludos Apuromafo


PD: para el RPGMV de la misma compañia (rpg maker mv o algo asi) tambien tiene armadillo, el procedimiento es el mismo
OS--> Microsoft, 64-bit (build
9200)
<------- 08/15/2017 03:23:51 ------->
Loading target:
RPGMV.exe
Process ID: 1938
EnumWindows: ArmaGeddon v2.2 for WinXP (32-bit final)
EnumWindows: armag 2.2 - Everything
EnumWindows: Armadillo Find Protected 2.1
Processing target...
==========================================
IAT Fixed Redirection Disabled!
VM address: 058DE290
VM variable: 0597CA20
==========================================
IAT Variable Redirection Disabled!
VM address: 05839CED
VM variable: 05965284
==========================================
No splices found.
==========================================
Dumping target...
Dump done!
Saved to: unpacked.exe
==========================================
Rebuilding Imports...
Rebuilding Imports completed
Return code: 0
Now, you should test your target. Good luck :)
==========================================
IAT RVA: 00023000
IAT Size: 00000718
OEP VA: 0041F68F
OEP RVA: 0001F68F
OEP call return VA: 05867F5A
Exit Process ID: 1938

el oep



Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 15 Agosto 2017, 15:27
Bueno, muchas gracias por lo que tu he echo. Más tarde cuando llegar del trabajo haré uno vistazo ao soft unpacado.

Saludos!


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 16 Agosto 2017, 02:29
He echado un vistazo pero está ocurriendo algún error al cargar en el ollydbg. Salta un mensaje de error de DLL, instalo la DLL y me pide otra, otra ... y no puedo cargar en el olly. ¿Es el sistema operativo que estoy utilizando?
Una vez que el programa se carga, aparece un RETN y el proceso queda "Terminated"...


(https://s12.postimg.org/c82btxknh/err2.png)

¿Qué estoy haciendo mal?


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 16 Agosto 2017, 08:04
te lo explicare facil y bonito, tu programa debes instalarlo para que corra bien ;)

sigue todas las instrucciones que me has puesto, solo que al lado del exe principal (packed con armadillo), colocas el unpacked y sin necesidad de depurador necesitas editar nada...
directamente en los editores de recursos..

ahora bien

ahi luego modificas a gusto, recuerda que el ejecutable necesita por defecto haber instalado las runtimes, sin las existencias de esas no corre, en una maquina virtual u otra puede que te falten dll o bien aun no sabes manejar las excepciones de wow64
en tu olly

por otro lado si es posible, intenta usar mas x64dbg si estas usando windows 7 en adelante, para usar ollydbg en esos sistemas operativos debes tener primero el plugin que fixea las excepciones propiamente tal del wow64 ...


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 16 Agosto 2017, 14:05
Citar
sigue todas las instrucciones que me has puesto, solo que al lado del exe principal (packed con armadillo), colocas el unpacked y sin necesidad de depurador necesitas editar nada...
directamente en los editores de recursos..

Bueno el programa esta bien instalado y he cargado en olly en la propria carpeta del soft.

ahi luego modificas a gusto, recuerda que el ejecutable necesita por defecto haber instalado las runtimes, sin las existencias de esas no corre, en una maquina virtual u
Citar
otra puede que te falten dll o bien aun no sabes manejar las excepciones de wow64
en tu olly

Sinceramente, no entendía lo que quise decir en esa parte (sé que debo estudiar más).

Citar
por otro lado si es posible, intenta usar mas x64dbg si estas usando windows 7 en adelante, para usar ollydbg en esos sistemas operativos debes tener primero el plugin que fixea las excepciones propiamente tal del wow64 ...

Debo instalar winxpX64 en mi máquina?
Perdón por la ignorancia, Es que tengo déficit de atención.


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 19 Agosto 2017, 04:41
facil y bonito: en esta ruta, deja el unpacked
https://postimg.org/image/lx9wn7wch/
ahi ejecutas y verificas que tal te va..(sin el packer)
para modificar usas herramientas como editores de recursos  http://www.angusj.com/resourcehacker/


respecto a depurar, recuerda que olly no esta pensado para windows 7, requiere ser parchado el wow64 (permite ejecucion de x86 en 64bytes)
https://tuts4you.com/download.php?view.3302
en ollydbg hay por lo menos varias excepciones, antes de llegar al oep, eso pasa, ahora bien si es por sugerencia portate a x64dbg, no deberias tener problemas, solo re.comenzar a conocer el depurador..
http://x64dbg.com/




Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 27 Agosto 2017, 18:24
Bueno decidí poner un pequeño flash para que usted entienda lo que no estoy entendiendo este error que está apareciendo al ejecutar el exe.

Flash: https://www.4shared.com/document/jFd0eDh-ei/rm2k4.html (https://www.4shared.com/document/jFd0eDh-ei/rm2k4.html)

Me parece que el exe está corrompido (no conozco mucho de esto, probablemente estoy equivocado).

También he experimentado desempaquetar usando el Armagedón y funcionó, pero el software no se ejecuta ni aparece ningún mensaje de error de Dll, etc. Me parece que el enigma es sólo en la parte de arreglar el OEP.

Otra cuestión, ¿conoce algún tute o herramienta de cómo poner el OEP del exe?



Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 31 Agosto 2017, 15:21
Muchas gracias Sr. Apuromafo, finalmente conseguí completar sus instrucciones !!!

Hice lo siguiente:

1. Cargué el programa sin cambios en ArmaGeddon.
2. Descomprimido, cargué en PE Editor (by Yoda y M.o.D).
3. Sustrae la ImageBase(00400000) por el OEP(005B7000) que usted ha encontrado y he aplicado los cambios(New. OEP 001B7000).
4. Funcionó perfectamente.

Bueno, queda otra duda, he intentado repetir los pasos 3 y 4 con el "rpg2003_unpacked_1B7CC0_no oep" y el programa no se ejecuta (aparece mensaje de error).


¿que puede ser? ¿Hay algo más que debo hacer con el "rpg2003_unpacked_1B7CC0_no oep" antes de cambiar el OEP?


Si no se pide demasiado, usted podría poner una captura de pantalla del programa funcionando con sus cambios? Lo sé que no és necessario, pero si lo pido es porque mi interessa gran mucho.

Saludos!!!


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 5 Septiembre 2017, 05:47
segun veo debe ser el tema de la plataforma x64 bytes, respecto de depurar programas con armadillo lo he hecho hace mucho..asi que no es para complicarse..solo debe ser eso (mi plataforma es diferente por lo que agrega dlls diferentes asumo)..

Saludos Apuromafo



Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 8 Septiembre 2017, 02:21
Ahora que hablas en la plataforma tiene todo sentido, más que vale es el aprendizaje.
Tema resuelto!!!
Muchas gracias.

Saludos 02k0.


 :D


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: apuromafo en 14 Septiembre 2017, 05:41
te resumo lo visto
el programa usa un stub propio en tls para ejecutar antes de ejecutar verifica que tiene las dll, una vez resuelto eso corre el programa, sin el oep el programa no corre

una vez reparado el oep viene el problema real...las nanomites, este programa tiene mas de 2mil ints3 en el programa y deben ser manejados por el padre, yo no se como solucionarlos, pero no falta el que pueda tener mas experiencia que yo (leer tutoriales al respecto) o usar otra estrategia como el uso de inline

Saludos Apuromafo


Título: Re: ¿Cómo hacer Strings que están a cero aparecer?
Publicado por: 02k0 en 16 Septiembre 2017, 02:02
Bueno tu puedes despues, mi pasar algunos trucos para inlinear? he olvidado las cosas que has hecho. ¿Se haya las strings sumando a ImageBase con qué?