Autor
|
Tema: Traducir de C++ a VB6 (Leído 3,729 veces)
|
Rigoberta II
Desconectado
Mensajes: 16
|
Hola, necesito ver si alguien sabe o conoce algun code parecido a este pero en VB6 ya que esta hecho en C++/C. Su función es modificar/cambiar/redireccionar la ip del juego por la de localhost ( 127.0.0.1 ) #include <windows.h> #include <iostream> using namespace std; void EnableDebugPriv(); //Nos aumentamos los privilegios, para evitar problemas con permisos... (Ring 3) void main() { BYTE newvalue[] = {0x31, 0x00, 0x32, 0x00, 0x37, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //Este es el valor en hexadecimal, de la cadena: 1 2 7 . 0 . 0 . 1 (rellenamos con 0 los numeros del IP antiguo sobrantes) HWND hwnd = FindWindow(0, "Solitario"); //Buscamos la ventana de nuestro juego/proceso (Yo hice la prueba con Solitario) DWORD pid;//Declaramos la variable PID para almacenar el ID de nuestro juego/proceso if(!hwnd) //Si no encontramos la ventana (el handle es nulo) { cout << "Error: No se pudo encontrar la ventana!" << endl; system("pause"); exit(0); } else { GetWindowThreadProcessId(hwnd, &pid); //Obtenemos el Id del proceso (PID) en base al handle que nos devuelve FindWindow HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); //Abrimos el proceso con acceso total (lectura, escritura) if(!hProcess) //Si no encontramos el juego/proceso (...) { cout << "Error: No se pudo abrir el handle" << endl; system("pause"); exit(0); } else //En caso contrario { if (WriteProcessMemory(hProcess, //Juego/Proceso a modificar (LPVOID)0x0100700C, //Direccion de memoria a modificar (Que en tu caso, si no es dinamica deberia ser: 0x0028B244) &newvalue, //Nuevos bytes a cambiar (en tu caso el nuevo IP) sizeof(newvalue), //Tamano de los bytes a modificar NULL)) //Este parametro lo podemos dejar nulo cout << "Memoria editada con exito!" << endl; //Exito! else cout << "Fallo al editar la memoria!" << endl; //Memoria no existente o protegida } CloseHandle(hProcess); //Cerramos el handle abierto anteriormente } system("pause"); } void EnableDebugPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue); tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, false, &tkp, sizeof tkp, NULL, NULL); CloseHandle(hToken); }
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Identifica las funciones de windows y solo las conviertes a API con sus respectivos tipos y punteros en las llamadas. Algo tedioso pero simple
FindWindows, OpenProcess y Tokens, encontrás usos y declaraciones para vb6 en google fácilmente, solo convertí las llamadas
|
|
|
En línea
|
|
|
|
Rigoberta II
Desconectado
Mensajes: 16
|
No entiendo como hacer eso.. Necesito redireccionar el ip por el que yo quiero especie de proxy Ip antigua : la del juego y IP nueva : 127.0.0.1 asi tiene que quedar alguien me ayuda plix? En lo posible tiene que ser en visual basic 6
|
|
|
En línea
|
|
|
|
rembolso
Desconectado
Mensajes: 163
|
mira te e echo un ejemplo muy rapido. no lo e probado, seguro tiene errores pero es lo q buscas, estoy apurado por irme de joda. cuando llegue te lo mejoro . Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long Declare Function EnumWindows Lib "user32" (ByVal wndenmprc As Long, ByVal lParam As Long) As Long Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Const ProAcceall As Long = &H1F0FFF Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseox As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function WriteString Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseox As Any, ByVal lpBuffer As Any, ByVal nSize As Long, ByVal lpNumberOfBytesWritten As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Dim NombreVentana As String, TexoRm As String, TexoOriginal As String, Direccion As Long'variables para utilzar con la memoria Public Sub Started(Nom As String, t As String, d As String, p As Long)'funcion que inicia la secuenia NombreVentana = Nom'nombre de la ventana a buscar o parte de ella TexoRm = t'texto a introducir TexoOriginal = d'texto original Direccion = p'direccionn de memoria Call EnumWindows(AddressOf EnumCallback, 0)'almacena los nombres obtenidos de ventanas e jecucion End Sub Private Function EnumCallback(ByVal A_hwnd As Long, ByVal param As Long) As Long Dim Size_buffer As Long, buffer As String * 256 Dim str As String Size_buffer = GetWindowText(A_hwnd, buffer, Len(buffer)) If InStr(1, Left$(buffer, Size_buffer), NombreVentana) > 0 Then str = ReadMem(A_hwnd, Direccion, LenB(TexoOriginal), TexoRm) Exit Function End If EnumCallback = 1 End Function Private Function ReadMem(hWnd As Long, Ox As Long, Bytes As Long, Optional Rempla As String) As String On Error Resume Next Dim Id As Long, sHandle As Long, bytValue As Long, i As Long, Text As String GetWindowThreadProcessId hWnd, Id sHandle = OpenProcess(ProAcceall, False, Id) If (sHandle = 0) Then Exit Function End If If Ox = 0 Then Exit Function For i = 1 To Bytes Step 2 ReadProcessMemory sHandle, Ox + i - 1, bytValue, 1, 0& ReadMem = ReadMem & Chr$(bytValue) Next If LenB(Rempla) <> 0 Then WriteString sHandle, Ox, StrPtr(Rempla), LenB(Rempla), 0& End If CloseHandle sHandle End Function
|
|
« Última modificación: 14 Mayo 2012, 04:59 am por rembolso »
|
En línea
|
|
|
|
Rigoberta II
Desconectado
Mensajes: 16
|
Dale dale xd gracias, fijate si podes escribirme como funciona cada parte
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Traducir de C a ASM
Programación General
|
Søra
|
3
|
9,038
|
6 Junio 2010, 05:10 am
por Og.
|
|
|
Traducir Code
Java
|
mapers
|
0
|
1,447
|
9 Septiembre 2012, 19:33 pm
por mapers
|
|
|
Traducir archivos exe y dll.
Ingeniería Inversa
|
amt1963
|
3
|
3,916
|
13 Noviembre 2014, 23:01 pm
por ivancea96
|
|
|
[Resuelto] Traducir pagina PHP
« 1 2 »
PHP
|
exploiterstack
|
10
|
4,686
|
15 Enero 2015, 14:11 pm
por exploiterstack
|
|
|
Traducir de ensamblador a C
Ingeniería Inversa
|
adelaperez
|
8
|
10,124
|
27 Febrero 2018, 01:20 am
por apuromafo CLS
|
|