![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Siendo un completo ignorante de ASM, porque no ejecutas en C++ y usas un debugger que te muestre que ASM esta generando, y luego lo mismo en Delphi?
__________________
El malabarista. |
|
#2
|
|||
|
|||
|
En C++_ASM se muestra una dirección que apunta a ese label de C++, lo que falta es calcular esa dirección del label en Delphi, ya que Delphi no lo hace automáticamente.
Es una dirección que varía dependiendo del ejecutable por lo que es necesario crear una función que lo calcule en tiempo de ejecución. Última edición por Reasen fecha: 28-06-2016 a las 21:56:20. |
|
#3
|
||||
|
||||
|
Yo tambien soy un ignorante mas, pero solo por curiosidad, que valor de retorno obtienes de la llamada a la funciones:
VirtualAlloc, VirtualProtect Porque si alguna falla (evalua a False), entonces no deberia ser seguro continuar con tu codigo. Deberias llamar a GetLastError, ya que estas funciones no elevan excepciones por si solas. Otra cosa, en la parte final de tu codigo, podrias refactorizarlo porque estas repitiendo codigo. Ademas, no entiendo porque retornas un Integer cuando luego la usas como un Boolean:
|
|
#4
|
|||
|
|||
|
Hola AgustinOrtu, gracias por pulir mi código, estos son los valores que me retornan VirtualAlloc y VirtualProtect
::: VirtualProtect = True VirtualAlloc = 0 ::: Dejo un screenshot de cómo se ven las 3 instrucciones de ASM con un compilador de C++ desde un debugger las cuales estoy intentando implementar en Delphi: ![]() Se puede apreciar como apunta al label que está un poco mas abajo del código... ¿Una solución un poco sucia seria apuntar unos bytes mas abajo desde la posición que se encuentre X código? Última edición por Reasen fecha: 29-06-2016 a las 02:24:23. |
|
#5
|
||||
|
||||
|
Bueno como te decia, no soy un experto. Pero leyendo la documentacion de VirtualAlloc, lo que te devuelve es
Cita:
|
|
#6
|
|||
|
|||
|
No se me ocurre otra manera que "HardCodearlo", pues no creo que sea una buena solución, quedaría inestable o sería difícil hacer cambios.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Orden de secuencia incorrecto | AngelV | JAVA | 4 | 13-09-2007 16:06:02 |
| Campo COUNT incorrecto? | Duc | SQL | 6 | 07-07-2005 18:39:28 |
| Error: Parámetro Incorrecto | Manuel | Varios | 2 | 30-04-2004 02:19:30 |
| Filtro Incorrecto | JamesBond_Mx | Conexión con bases de datos | 2 | 06-04-2004 23:31:23 |
| Indice incorrecto | VolaRe | Varios | 8 | 22-02-2004 21:34:45 |
|