Hola, de entrada decirles que no se ni pajolera idea de asm... por eso mi pregunta.
Como consigo hacer el return de la variable "primero" ?
char lanzar(){
char primero = 0;
__asm{
call des
des :
pop primero
}
return primero;
}
Moviendo el valor de primero al registro AL.
Me puedes poner el ejemplo bien comentado?.
Hola!
No entiendo bien qué quieres hacer:
Estás intentando devolver el valor que tiene la variable dentro de la función o la dirección de memoria en la que está?
Al ser una variable local, lo más probable es que esté en el stack, por lo que va a destruirse al salir de la función (en realidad no se destruye, pero esa dirección seguramente será machacada por el código siguiente.).
Si es por devolver el valor, como dijo Eternal Idol:
char lanzar(){
char primero = 0;
__asm{
mov al, primero
}
}
Lo que intento es obfuscar este codigo.
DWORD prueba = 0;
// *** The following code gets EIP register value and stores into primero
__asm call andro
__asm andro:
__asm pop primero
prueba = (DWORD)(*(DWORD *)(--primero));
las funciones retornan el valor en eax.
Si colocas:
...codigo obfuscado
mov al, valor
... codigo obfuscado
retn
Cuando alguien depure tu programa va a tener:
codigo
call tu_procedimiento ; con codigo obfuscado
<---- al tendrá el valor de retorno
codigo
No importa lo que pongas en la obfuscacion, el valor de retorno estará en eax.
Tendrás mas "suerte" usando variable global o pasando el parametro por referencia.
Saludos.