Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karcrack

#101
Sólo vengo por el título...

base64 NO es un cifrado. Es una codificación. No sirve para proteger nada.
#102
Tras intentar instalarle a mi novia en Windows 8 Los Sims 2 con varias expansiones y ver que los instaladores de las expansiones eran incapaces de actualizar la base del videojuego decidí ver que pasaba.

Después de investigar vi que el problema lo tenía casi todo el mundo y lo que se recomendaba era instalarlo desde el modo seguro. Esto no me funcionó ya que el instalador entraba en bucle durante el asistente.

Finalmente encontré la solución que todo el mundo usaba: instalarlo en Windows 7 y transferir la instalación al ordenador de Windows 8 copiando/pegando.
Eso a mí no me hacía ninguna gracia así que decidí debuggear a ver que hacía crashear al actualizador.

Resulta que hay un stack overflow. El actualizador intenta gastar más espacio de la pila del que tiene. ¿Forma simple de repararlo? Aumentándolo.

Reparando el instalador de expansiones de Los Sims 2 en Windows 8:

  • Copiamos el contenido del CD (O de la imagen de CD :silbar:) en una nueva carpeta del disco duro.
  • Vamos a la subcarpeta TSBin que estará en esa nueva carpeta creada.
  • Abrimos el ejecutable problemático (TS2UPD.exe, TS2UPD0.exe, TS2UPD*.exe... dependerá de la expansión) con nuestro editor PE favorito. (Recomiendo usar CFF Explorer)
  • Navegamos hasta OptionalHeader->SizeOfStackCommit y multiplicamos su valor por 16 (O lo que es lo mismo, quitamos un 0 del lado izquierdo y lo metemos en el derecho) para dar espacio más que de sobra.

Esa solución me funcionó. Windows 8 64 bits.

Tal vez me quedo algo soso el post sin imágenes, pero bueno, a aquel que consiga encontrarlo le resultará muy útil.

Saludos
#103
Cita de: Vaagish en 16 Abril 2013, 19:22 PM
invoke loadlibrary, "Kernel32" -> Me dice que no se reconoce loadlibrary, porque loadlibrary esta dentro de Kernel32, con lo que para que la reconozca tendria que declarar Kernel32 al inicio del code :/
El nombre de la función es LoadLibraryA() o LoadLibraryW() la primera es ANSI y la segunda UNICODE. El ensamblador no sabe a dónde apuntar si le dices loadlibrary. El nombre de las funciones es sensible a mayúsculas y minúsculas.


El enlace que comparte mDrinky es una muestra de cómo obtener el puntero a la función sin usar GetProcAddress(); recorriendo manualmente la EAT de la librería. Eso sí, el código está algo limitado y no considera funciones con ordinales o forwarding.


Una función hash es aquella que obtiene un identificador único de tamaño fijo de ciertos datos. En el link de mDrinky un tamaño de 4 bytes aunque las colisiones son altas.
#104
Cita de: Vaagish en 16 Abril 2013, 01:43 AM
El problema es que LoadLibrary se carga incluyendo a Kernel32,, entonces supongo yo que no puede autollamarse,, Me explico????
No entendí. Si que puedes hacer LoadLibraryA("kernel32") si es lo que preguntas. Con esto obtendrías la dirección base de la DLL sin tener realmente que cargarla de nuevo. La forma correcta sería GetModuleHandle() ya que sabes que ya está cargada.

Cita de: Vaagish en 16 Abril 2013, 01:43 AM
Y otra consulta.. Como puedo ofuscar los strings "user32", "messageboxA", etc, etc.. porque eso queda a plena vista del ollydbg, supongo que para un AV no es mayor problema leer esos string tambien..
Ese sería el siguiente paso a la indetección. Cifrar cadenas sospechosas :)
#106
Si estás programando en C no tendrás que complicarte tanto la vida como toca hacer en VB6.

La forma más simple de llamar a una función de forma dinámica es obteniendo su puntero con LoadLibrary() y GetProcAddress(). Algo así:

Código (cpp) [Seleccionar]
FARPROC fnc = GetProcAddress(LoadLibrary("KERNEL32"), "ExitProcess");
__asm{
   push 0
   call [fnc]
}

(Puede que no compile tal cual, lo acabo de escribir sin más. Creo que la idea queda clara.)

Suerte ;)
#107
Pues no sé que pretendías hacer si no entiendes ese código. Son apenas 10 lineas de código efectivo.

Basta con que te leas la entrada para ver que ese código sube el fichero localizado en la SD a un servidor FTP.
#109
La clave es cargar las APIs de forma dinámica. Si abres tu binario con cualquier editor de PE podrás ver que hace directamente las importaciones en la IAT. Un AV no tiene ninguna dificultad en revisar esa lista y empezar a sospechar.
#110
Troyanos públicos con server hecho en ASM que yo conozca: PoisonIvy.

Las ventajas de programar el server en ASM es que el tamaño puede ser de menos de 1KB. Respecto a los AVs... Siempre que no vayas uniendo códigos no tienes mucho que temer. Se centran más en detectar aplicaciones en VB6 :laugh: :laugh: Además en caso de ser taggeado es muy muy fácil volver a indetectarlo.

Si bien no te resultará fácil siendo nuevo en ASM seguro que aprenderás mucho.

Mucha suerte :)