Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ByJørGe en 10 Febrero 2017, 00:08 am



Título: Ayuda con variables en (C++ Builder)
Publicado por: ByJørGe en 10 Febrero 2017, 00:08 am
Como usaria esa variable "VARIABLE1:PChar; "  en c++ ? aca les dejo una imagen de mi codigo (DELPHI)
Código:
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 :
(https://scontent.flim5-1.fna.fbcdn.net/v/t1.0-9/16508520_253153361796598_3626401029624288313_n.jpg?oh=d51304902a4bcf3bf80de6c61dae2831&oe=590825DA)


Espero que me puedan ayudar , muchas gracias.


Título: Re: Ayuda con variables en (C++ Builder)
Publicado por: ThunderCls en 11 Febrero 2017, 01:22 am
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
  1. // prototipo de funcion
  2. int WINAPI MessageBox(
  3.  _In_opt_ HWND    hWnd,
  4.  _In_opt_ LPCTSTR lpText,
  5.  _In_opt_ LPCTSTR lpCaption,
  6.  _In_     UINT    uType
  7. );
  8.  
  9. // puntero a funcion
  10. typedef int(WINAPI *msgbox)(HWND, LPCSTR, LPCSTR, UINT);
  11.  
  12. // obteniendo la direccion
  13. msgbox mb = null;
  14. mb = (msgbox)GetProcAddress(GetModuleHandleA("user32.dll"), "MessageBoxA");
  15.  
  16. // llamando a la funcion
  17. if( mb != NULL ) {
  18.    (*mb)( NULL, "Hola Mundo!", "Hello", MB_OK );
  19. }

Con esto puedes hacerte una idea y tomar como base el código y acomodarlo a tu caso especifico
Saludos