Ayuda con variables en (C++ Builder)

Iniciado por ByJørGe, 10 Febrero 2017, 00:08 AM

0 Miembros y 1 Visitante están viendo este tema.

ByJørGe

Como usaria esa variable "VARIABLE1:PChar; "  en c++ ? aca les dejo una imagen de mi codigo (DELPHI)
procedure JorgeThread();
var
VARIABLE1:PChar;
VARIABLE2:PChar;
begin
VARIABLE1 := GetProcAddress(GetModuleHandleA('VerinAllign3.dll'),('FUNCION1'));
VARIABLE2 := GetProcAddress(GetModuleHandleA('VerinAllign3.dll'),('FUNCION2'));

while(true) do begin
   Sleep(40);

        if (GetAsyncKeyState(VK_F1) <> 0) then begin;

       asm
       call VARIABLE1
       mov ecx, eax
       mov edi, eax
       call VARIABLE2
     end;
   end;
 end;
end;



Quisiera usar esa variable en c++ ..  , hasta ahora he logrado hacer esto :



Espero que me puedan ayudar , muchas gracias.

ThunderCls

Primero que todo te recomiendo elaborar mas tus post, de esa forma las personas se podrían ver un poco mas inclinadas a responderte, por ej, el codigo que pones al principio deberias usarlo dentro de  etiquetas geshi. Por otra parte, podrias dar un poco mas de informacion de que es lo que deseas hacer, en fin.
Aparentemente tu codigo busca un par de funciones en "VerinAllign3.dll" y luego las intenta ejecutar usando inline asm. Lo primero que te recomendaria es que buscaras un poco de informacion acerca de hacer llamadas desde tu app a dll externas de forma dinamica para que sepas lo que estas haciendo. En este caso, debes conocer los prototipos de las funciones que deseas llamar al menos, sino no habra mucho que puedas hacer. Una vez que conozcas dichos prototipos (tipo de convención de llamada usada, valor de retorno, parametros, etc) puedes proceder a crear un par de punteros a dichas funciones, si no sabes de este tema tendras que volverte a pasar por google y hacer la tarea. Una vez tengas los punteros a dichas funciones solo te quedaria usar GetProcAddress para obtener las direcciones correctas y procedes a llamar a dichas funciones como otras funciones regulares.
Ahora, en tu caso usas inline ASM para dicho fin, y no es que este mal, pero no tienes necesidad de esto, igual si aun deseas ese acercamiento, pues tendras que leer otro poco acerca de ASM y el metodo de llamar funciones, etc, resumiendo, mi consejo es que te vayas por la primera opcion que te mostre. Luego para que tengas una idea de como seria te pongo un ejemplo:

Llamando API MessageBox dinamicamente:

Código (cpp) [Seleccionar]
// prototipo de funcion
int WINAPI MessageBox(
  _In_opt_ HWND    hWnd,
  _In_opt_ LPCTSTR lpText,
  _In_opt_ LPCTSTR lpCaption,
  _In_     UINT    uType
);

// puntero a funcion
typedef int(WINAPI *msgbox)(HWND, LPCSTR, LPCSTR, UINT);

// obteniendo la direccion
msgbox mb = null;
mb = (msgbox)GetProcAddress(GetModuleHandleA("user32.dll"), "MessageBoxA");

// llamando a la funcion
if( mb != NULL ) {
    (*mb)( NULL, "Hola Mundo!", "Hello", MB_OK );
}


Con esto puedes hacerte una idea y tomar como base el código y acomodarlo a tu caso especifico
Saludos
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/