Autor
|
Tema: Es posible esto? (Leído 2,639 veces)
|
JaimeAsm
Desconectado
Mensajes: 23
|
Hola foreros como estais?
soy nuevo en ese foro,tengo una duda que espero pueda con buestra auda resolver!
es posible poner una nstruccion (ejmp: un MessageBox) a un executable desde otro executable?
osea desde un exe mapear en memoria el ejecutable a modificar,i una vez en la memoria intrducirle la instruccion a un offset que este libre,
podrian darme algun code de eso??
uso Masm32,trabajo en 32 bits ^^
un cordial saludo
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
Como poder se puede. ¿Que es lo que hiciste hasta ahora? Es cuestion de escribir los bytes correctos en el lugar correcto ...
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
JaimeAsm
Desconectado
Mensajes: 23
|
Hola Eternal Idol como va? gracias por responderme,pues lo que hice maximo es escribir en un offset en dodne ya habia unos bytes (una cadena de text que se mostraba en un mensaje que mostraba el exe que quiero modificar) pero no se como puedo escribir una instruccion,,ya imagino que debo escribir los bytes de la instruccion que quiero agregarle al otro exe,y imagino que tendre que escribirlo en un offset que no este ocupado,asta ahora utilizaba las api CreateFile,,CreateFileMapping,MapViewOfFile i despues hacia esto: [code=asm] MOV EDI,EAX ;EAX = Retorno de MapViewOfFie¡le ADD EDI,[800h] ;offset donde quiero escribir LEA ESI,Instruccion ;Dieccion de la etiqueta que contiene la instruccion REP MOVSB
[/code] peor nada no sale  estoi perdido
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
¿Que es lo que queres hacer exactamente? Tene en cuenta que en cuanto escribas en ese ejecutable si era confiado por el sistema (mediante catalogo o firma embebida) ya no lo sera mas.
Si queres agregar una llamada a un MessageBoxA por ejemplo tenes que escribir el codigo para poner los parametros en la pila primero y despues hacer el call. Si la funcion ya esta importada estaticamente por el ejecutable buscala y usa ese puntero.
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
JaimeAsm
Desconectado
Mensajes: 23
|
Osea me dices que haga esto: PUSH 0 PUSH OFFSET Cabecera PUSH OFFSET Mensaje PUSH 0 CALL[MessageBoxA] ?¿?¿ no? perdoname es que no entendi my bien.  si tuvieras algun ejemplillo me aydudarias mazo Hermano!! un saludo crack!
|
|
|
|
|
En línea
|
|
|
|
|
|
|
Eternal Idol
|
Osea me dices que haga esto: Si queres agregar una llamada a MessageBoxA vas a tener que escribir algo como eso en el ejecutable. Poner los parametros en la pila (tene en cuenta que los offset's no estaran en ese ejecutable) y llamar a la funcion (sino esta importada podes agregarla al PE o agregar codigo para llamar a GetProcAddress y obtener su direccion en tiempo de ejecucion).
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
JaimeAsm
Desconectado
Mensajes: 23
|
aaa...vaya creo que no podre hacer lo que queria,yo queria agregar una fuinstruccion como dejemmplo el MessageBoxA en cualquier ejecutable,no en uno que tenga que crear yo pero ceo que eso ya como k no xd
gracias de antemano expertos!
|
|
|
|
|
En línea
|
|
|
|
MCKSys Argentina
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
Puedes insertar cualquier libreria en un EXE y luego llamar a la función que gustes dentro de la misma. Más aún, si esuna DLL de sistema. Sólo debes usar LoadLibrary y GetProcAddress. Saludos! PD: También hay métodos más rebuscados cuando no dispones de esas APIs...  Como ejemplo, (si tienes instalado MASM) fíjate en la carpeta: X:\masm32\examples\EXAMPLE8\MOB\NOIMPORT. Ahí encontrarás un método más que interesante para solucionar el problema.
|
|
|
|
|
En línea
|
--------------------- MCKSys Argentina
"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
|
Eternal Idol
|
MCKSys Argentina: no es lo mismo cargar una libreria en la memoria de un proceso que modificar el ejecutable en disco. Igual tal vez le interese JaimeAsm, no se que quiere hacer exactamente ...
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
JaimeAsm
Desconectado
Mensajes: 23
|
Vaya veo que no me explicado bie,lo siento!
intentar explicarm mejor:
aver,imaginen que yo tengo 2 Ejecutables ue e creado y programado con MASM32, en uno teno la istruccon:
invoke MessageBox,0,offse Texto,OFFSET Cabecera,0
eso ara que cuando ejecute el ejecutable pues me muesrte un mensaje no??
pues yo desde otro ejecutable quiero que despues de esa instruccion me ejcute otra instruccion (instruccion que yo añado a este ejcutable desde el otro) por ejemplo otro messagebox o otra cosa entendeis??????
salu2
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
Estas hablando de algo muy concreto pero no le veo ninguna utilidad. ¿Cual es el objetivo? Esa es la pregunta realmente, a veces hay muchas maneras de hacer algo.
¿Tenes que escribir en el ejecutable o lo podes hacer en tiempo de ejecucion como menciono MCKSys Argentina?
|
|
|
|
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
MCKSys Argentina
Desconectado
Mensajes: 1.141
Diviérte crackeando, que para eso estamos!
|
Creo que se refiere a parchearlo en tiempo de ejecución... Al menos, eso es lo que aparenta... 
|
|
|
|
|
En línea
|
--------------------- MCKSys Argentina
"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
JaimeAsm
Desconectado
Mensajes: 23
|
Si eso mismo! en Runtime,parchearlo en Runtime ^^
salu2
|
|
|
|
|
En línea
|
|
|
|
|
Eternal Idol
|
"osea desde un exe mapear en memoria el ejecutable a modificar,i una vez en la memoria intrducirle la instruccion a un offset que este libre,"
¿Un proceso o un ejecutable en disco?
En ambos casos tenes que escribir lo que te comente, lo bueno de hacerlo en la memoria del proceso es que no cambia el ejecutable asi que sigue siendo confiable para el S.O. pero el codigo de ejemplo que mostraste NO era eso sino escribir sobre el archivo del ejecutable en disco ("CreateFile,,CreateFileMapping,MapViewOfFile").
|
|
|
|
« Última modificación: 16 Febrero 2010, 14:53 por Eternal Idol »
|
En línea
|
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón.
|
|
|
|
|