Páginas: 1 2 [3]
|
 |
|
Autor
|
Tema: El programa mas pequeño que no haga nada (en ASM) (Leído 944 veces)
|
Eternal Idol N&P
Desconectado
Mensajes: 1.276
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
logicamente antes de escribir la rutina debes obtener la direccion de sleep y guardarla en addrsleep.
Por lo cual sigue estando hardcodeada (mientras no se resuelva en tiempo de ejecucion lo sera)  Y con el codigo que deje es exactamente lo mismo ... salvo que necesita una sección de datos y copiarla tambien ...
|
|
|
|
« Última modificación: 02 Febrero 2008, 17:12 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
Ferсhu
Desconectado
Mensajes: 1.225
Menos palabras y Mas codigos.
|
<~>FeRcHu<~> se entiende aunque es demasiada complejidad innecesaria Okas al menos allguien me entiene jaja con eso alcanza. nhaalclkiemr no entiendo por q siempre planteas el problema indirecto para llegar a otra cosa jaja si al final siempre terminamos disviando al tema q realmente esta el problema. por q para mi hacer eso para matar a un Av es como medio raro. Osea, si podes escribir en su "memoria" seguramente podras likidarlo sin vueltas x eso no entiendo el problema jeje, De simular q el AV sigue corriendo?? de ultima te haces un mini prog q simule el AV mostrando un icono y unos nags jaja y listo. pero creo q es medio complicado de la forma q lo encarass...
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.276
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
A, otra idea q se me a ocurrido, puedes hookear un api q use el av en concreto y q llame frecuentemente. Entonces, hookeas el api y cuando llame al api haces q se ejecute una funcion tuya q no haga nada, vamos q entre el un bucle con sleeps o algo asi. Es mas simple q el metodo anterior, por lo menos a mi parecer Salu2  Es otra solucion de una complejidad innecesaria  Si tenemos privilegios para escribir en la memoria del proceso los tendremos para suspender sus hilos directamente, mucho mas facil y fiable.
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
|
E0N
|
Es otra solucion de una complejidad innecesaria wink Si tenemos privilegios para escribir en la memoria del proceso los tendremos para suspender sus hilos directamente, mucho mas facil y fiable. Yo solo doy ideas, luego q haga lo q kiera o lo q mas facil le parezca 
|
|
|
|
|
En línea
|
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.144
|
Por lo cual sigue estando hardcodeada (mientras no se resuelva en tiempo de ejecucion lo sera) grin Y con el codigo que deje es exactamente lo mismo ... salvo que necesita una sección de datos y copiarla tambien ... no esta hardcodeada, pq digamos que esto es una porcion de codigo dentro de tu programa que el valor inicial de addrsleep es 0 y desde el programa que va a escribir en el fichero le pondremos la direccion de esta funcion. una vez se ejecute la funcion en el otro archivo addrsleep ya no vale 0 si no que vale la direccion de sleep y es un codigo valido para cualquier version de win. para que me entiendas mejor: codigo que abre y mapea el fichero obtengo una direccion donde copiar mi rutina obtengo direccion de sleep guardo esta direccion en addrsleep copio mi ruitina en el archivo (logicamente tb estoy copiando la direccion de sleep para el sistema donde se esta ejecutando el codigo) modifico cabecera para que apunte a mi codigo cierro todo de este modo te digo.
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.276
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
no esta hardcodeada, pq digamos que esto es una porcion de codigo dentro de tu programa que el valor inicial de addrsleep es 0 y desde el programa que va a escribir en el fichero le pondremos la direccion de esta funcion. una vez se ejecute la funcion en el otro archivo addrsleep ya no vale 0 si no que vale la direccion de sleep y es un codigo valido para cualquier version de win. para que me entiendas mejor:
codigo que abre y mapea el fichero obtengo una direccion donde copiar mi rutina obtengo direccion de sleep guardo esta direccion en addrsleep copio mi ruitina en el archivo (logicamente tb estoy copiando la direccion de sleep para el sistema donde se esta ejecutando el codigo) modifico cabecera para que apunte a mi codigo cierro todo
de este modo te digo.
¿Que pasa si copio el ejecutable a otra maquina con otra version de Kernel32.dll? ¿No esta hardcodeada? En cuanto esa libreria cambie, por un KB, por un Service Pack, etc el programa se puede ir a la *****. En tu programa no esta hardcodeada, es cierto, pero en el ejecutable modificado si ... a eso me referia yo desde el principio. No hay ninguna diferencia con: ;addrSleep = variable obtenida con GetProcAddress por ejemplo, aunque podemos enlazar estaticamente push 100 mov eax, addrSleep call addrSleep
|
|
|
|
« Última modificación: 02 Febrero 2008, 17:26 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.144
|
hombre eso esta claro, pero no es logico copiar el ejecutable del antivirus "solo" normalmente se instala y ahi debe estar el otro programa para escribirle la rutina. aunque la podria sacar en runtime en un momento dado.
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.276
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
hombre eso esta claro, pero no es logico copiar el ejecutable del antivirus "solo" normalmente se instala y ahi debe estar el otro programa para escribirle la rutina. aunque la podria sacar en runtime en un momento dado.
Claro, el punto era demostrar que si estaba hardcodeada, no en el origen pero si en el destino. Evidentemente que en el origen es muy simple de conseguir la direccion pero no es tan facil en el destino.
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.144
|
en el destino esta chupao  . hace ya mas de 2 años que escribi una "shellcode" que ejecutaba cmd sin usar direcciones hardcodeadas. en concreto en este hilo http://foro.elhacker.net/index.php/topic,55797.0.html y bueno ya discutimos (no se si tu eres raise  ) sobre el tema de guardar direcciones en la pila etc ... pero vamos que las direcciones las saca. ahi el codigo es un poco kk y largo ya que ahi estaba algo verde en algunos temas pero hace su funcion.
|
|
|
|
|
En línea
|
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.276
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
en el destino esta chupao  . hace ya mas de 2 años que escribi una "shellcode" que ejecutaba cmd sin usar direcciones hardcodeadas. en concreto en este hilo http://foro.elhacker.net/index.php/topic,55797.0.html y bueno ya discutimos (no se si tu eres raise  ) sobre el tema de guardar direcciones en la pila etc ... pero vamos que las direcciones las saca. ahi el codigo es un poco kk y largo ya que ahi estaba algo verde en algunos temas pero hace su funcion. Si, esa tecnica tiene muchos años pero me mantengo en lo dicho, creo que sigue siendo un poco mas facil solo llamar a GetProcAddres  No, yo soy Eternal Idol.
|
|
|
|
« Última modificación: 02 Febrero 2008, 17:42 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
®®
Colaborador
Desconectado
Mensajes: 5.144
|
Si, esa tecnica de scannear tiene años pero me mantengo en lo dicho, creo que sigue siendo un poco mas facil solo llamar a GetProcAddres logicamente, pero yo estoy hablando para poder meter codigo en otros archivos y no meter direcciones.
|
|
|
|
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.225
Menos palabras y Mas codigos.
|
en el destino esta chupao tongue. hace ya mas de 2 años que escribi una "shellcode" que ejecutaba cmd sin usar direcciones hardcodeadas. en concreto en este hilo http://foro.elhacker.net/index.php/topic,55797.0.html y bueno ya discutimos (no se si tu eres raise wink ) sobre el tema de guardar direcciones en la pila etc ... pero vamos que las direcciones las saca. ahi el codigo es un poco kk y largo ya que ahi estaba algo verde en algunos temas pero hace su funcion. jaja si la conoco mui bien, si no me ekivoco leia getprocaddress de la iat o algo asi jeje. emmmmmmm no nos vallamos por las ramas. yo creo q lo mejor seria q suspenda el hilo y listo, si no pasa algo como q el prog principal los reviva, seria la mejor opcion.
|
|
|
|
|
En línea
|
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.644
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
Puff dios cuantos post  Vamos por partes...a ver E0N es normal que te consuma el 20% si tienes cuatro nucleos...las aplicaciones aun no estan hechas para que puedan aprovechar más de un nucleo y por eso un programa que gaste el 100% de CPU (por ejemplo un brute force) en un Dual Core solo consumirá de máximo el 50% y en un Quad el 25%...si te consume un 20% es que el resto de programas te están consumiendo lo otro 5%...pero es como si estuviera consumiendo el 100%... Tiene razón <~>FeRcHu<~> que plantee el tema de una manera indirecta...pero es que tenía pensada otra cosa...tenia pensado cojer el nuevo ejecutable (el de ASM) y ponerlo por encima del otro...entonces ya quedaría inservible...pero claro perdia el icono...y eso fue de lo que no me di de cuenta... A ver voy explicar justo lo que quiero...es para un AV-Killer...matar a los procesos se hacerlo...la cuestión es una vez cerrados ya los procesos, modificar los ejecutables de manera que parezcan que siguen igual la proxima vez que se ejecuten...con el icono y que si los ejecutas no den error...que permanezcan en ejecucion pero sin hacer nada...antes lo de C3 era para que al ejecutarlos se salieran inmeditamente...pero supongo que si permanecen ejecutandose sin hacer nada es menos cantoso... Y esto lo quiero hacer modificando lo menos posible el ejecutable (aunke esto no es lo más importante) y sobre todo de una manera rapida...cosas complicadas llevarían bastante tiempo si lo hago para todos los ejecutables...además pensad que aun estoy con VB y no es lo mas rápido k hai... Lo que tiene es que funcionar con todos los ejecutables (no quiero que quede ninguno vivo por ai xD) y debe funcionar en todos los XP... A ver...lo de redireccionar Threads pues la verdad no se hacerlo y no se muy bien lo que es pero tengo una idea y pienso que no es lo que quiero hacer...o si me sirve? Lo de usar el Sleep me parece al mejor idea...pero no se que es eso de " hardcodeada"...la cuestión es que no se modificar el ejecutable para que use una API que antes no tenía...como lo hago?... Lo de copiar el programa en ASM que no hace nada por encima del otro (a pelo xD) no me gusta mucho, no quiero tener que andar cogiendo los recursos para volver a ponerselos...si puedo copiar un trozo de un code y ponerselo en algun lado sin modificar la cabecera y con eso conseguir lo que quiero mucho mejor...pero weno siempre es una alternativa... Saludos 
|
|
|
|
« Última modificación: 03 Febrero 2008, 16:21 por nhaalclkiemr »
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.225
Menos palabras y Mas codigos.
|
Lo de usar el Sleep me parece al mejor idea... Segun lo q yo entendi lo q vos keres es, dejar el AV funcionando pero q no haga nada, solo q aparente estar todo bien. si haces eso tenes q saber donde ponerlo para conseguir eso, y ademas tiene varios hilos el programa y x ej yo tengo el avg y tiene 4 archivos ejecutandose asi q seria un poco mas complicado. Para mi tendrias q suspender los hilos, pero para eso tenes q conocer como funciona y q hace cada uno de ellos, y eso debe ser diferente para cada AV. Tambien se podria anular las llamadas (calls) en los ejecutables, las nopeas, y dejar solo la interfaz del antivirus pero sin funcionabilidad pero hay 2 problemas, el primero es q tenes q conocer bastante como son x dentro cada uno, y el segundo es q para cada AV tenes q hacer un "trabajo" diferente, osea especifico. Asi q seria algo larguito jeje.
|
|
|
|
|
En línea
|
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.644
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
No...a ver sería muy profesional por ejemplo que pareciera que funcionara y no funcionase...eso es muy dificil...me llega con que al ejecutarlo no haga nada pero que si vas con el taskmgr.exe veas el proceso iniciado... Por eso digo lo del el Sleep...sería poner en la direccion del EntryPoint un bucle infinito que no consuma CPU (la minima posible  )...por eso hablo del Sleep... Saludos 
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: 1 2 [3]
|
|
|
|