|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4 5
|
11
|
Programación / Ingeniería Inversa / Re: usar ollydbggr para obtener direcciones
|
en: 21 Julio 2007, 23:02 pm
|
es que yo se más o menos leer en inglés, pero no perfectamente, no siempre entiendo el significado..... bueno pero eso no sería nada, el tema es que no se bien que es lo que hace con el olly dbbgr..... ..........in function that there are 2 string both "player" and in next function first string is "%d:%02d\n" so let now open ollydbg. start css and attatch olly to. since we know class defin i n client project we load client module from css module list.
next we right click, "search for", "all referenced text strings". let load and when finished load right click in result box and select "search for text". put in box "%d:%02d\n" without the qutos. you result 1 and above result u should see "player" and "player" above that, so you know you are right place.......... 
|
|
|
12
|
Programación / Ingeniería Inversa / Re: loader hacer loaders
|
en: 21 Julio 2007, 22:58 pm
|
LOADER#include <windows.h> #include <stdio.h> #include <iostream.h> #include <tlhelp32.h>
#define GAME "hl.exe" #define DLL "Hook.dll"
bool ok; int main() { int a; HANDLE hAndle; PROCESSENTRY32 pe; pe.dwSize = sizeof(PROCESSENTRY32);
while(!ok) { HANDLE hAndle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(Process32First(hAndle,&pe)) { do { HANDLE hTemp=OpenProcess(PROCESS_ALL_ACCESS, 0, pe.th32ProcessID); if(hTemp) { if( strcmpi(pe.szExeFile, GAME) == 0) { hAndle = OpenProcess(PROCESS_ALL_ACCESS, FALSE,pe.th32ProcessID); LPVOID lpRemoteAddress=VirtualAllocEx(hAndle,NULL,strlen(DLL),MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hAndle, lpRemoteAddress, (LPVOID)DLL, strlen(DLL), NULL);
CreateRemoteThread(hAndle, NULL, 0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"), lpRemoteAddress, 0, NULL); ok=true; break; } CloseHandle(hTemp); } } while(Process32Next(hAndle, &pe)); } }
return 0; } DLL__stdcall DllMain(HANDLE handle,DWORD message,LPVOID lpReservd) { switch(message) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls((HMODULE)handle); MessageBox(NULL,"TEST","TEST",MB_OK); //real_glBegin=(FUNC_GLBEGIN)DetourFunction((PBYTE)DetourFindFunction("OpenGL32","glBegin"),(PBYTE)myGlBegin); //real_glViewport=(FUNC_GLVIEWPORT)DetourFunction((PBYTE)DetourFindFunction("OpenGL32","glViewport"),(PBYTE)myGlViewport); break; }
return TRUE; } #include "stdafx.h" #include "DigiHook.h" #include "psapi.h" #include <windows.h> #include <Tlhelp32.h> #include <detours.h> #include <string.h> #define end1 '\n'
#ifdef _DEBUG #define new DEBUG_NEW #endif
CWinApp theApp;
using namespace std;
// you need psapi.lib, and detours.lib
BOOL InjectIntoProcess(TCHAR* szExeName, TCHAR* szDllName);
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0;
// initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs _tprintf(_T("Fatal Error: MFC initialization failed\n")); nRetCode = 1; } else { int hooked = FALSE; cout << "Waiting to inject ..." << end1;
while (!hooked) { if (InjectIntoProcess( _T( "hl2.exe" ), _T( "digihook.dll" ) ) ) { hooked = TRUE; cout << "HL2 successfully hooked!"; } Sleep(100); }
cin.get(); }
return nRetCode; }
BOOL InjectIntoProcess(TCHAR* szExeName, TCHAR* szDllName) { TCHAR szProcessName[MAX_PATH]; TCHAR szDllNameAndPath[MAX_PATH]; DWORD aProcesses[1024], cb, cProcesses; HANDLE hProcess = NULL; HMODULE hMod = NULL; UINT i = 0;
// Get the full path to the DLL for later use GetCurrentDirectory(MAX_PATH, szDllNameAndPath); wcscat_s(szDllNameAndPath, _T("\\")); wcscat_s(szDllNameAndPath, szDllName);
// Get the list of process identifiers if(!EnumProcesses(aProcesses, sizeof(aProcesses), &cb)) return FALSE;
// Calculate how many process identifiers were returned cProcesses = cb / sizeof(DWORD);
// Get the name and process identifier for each process for(i = 0; i < cProcesses; i++) { hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);
if(hProcess) { if(EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cb)) { GetModuleBaseNameW(hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR)); }
if(wcscmp(wcslwr(szProcessName), szExeName) == 0) { // We found the process, inject our DLL if(DetourContinueProcessWithDllW(hProcess, szDllNameAndPath)) { return TRUE; } } } CloseHandle(hProcess); } return FALSE; }
este es un code de un loader, lo traje de un foro de programación sobre half life y otros, hay más codes, este lo hizo un tal sinner.
|
|
|
13
|
Programación / Ingeniería Inversa / Re: usar ollydbggr para obtener direcciones
|
en: 21 Julio 2007, 22:12 pm
|
esas direcciones son de punteros a punteros.... pero necesito nuevas y no se bien como conseguirlas...... salu2
tus preguntas a veces resultan un tanto extrañas.. Salu2.. OH! pero yo me pregunto, alguno vio el tutorial ese que puse el link, porke si no le dan una mirada no sabremos de lo que estamos hablando.......... 
|
|
|
17
|
Programación / Ingeniería Inversa / Re: usar ollydbggr para obtener direcciones
|
en: 20 Julio 2007, 08:54 am
|
NOO.. no es para parchear, no es para crackear nada, es que ves por ejemplo este code:
PDWORD hud_player_info_pointer_pointer_cs16 = (PDWORD)0x01950658; PDWORD ref_params_pointer_pointer_hl_steam = (PDWORD)0x01D0F99F; PDWORD cl_entity_pointer_pointer_hl_steam = (PDWORD)0x01EF4F84; PDWORD fov_pointer_pointer_hl_steam = (PDWORD)0x0190EBE8;
bueno, esas direcciones son antiguas, necesito nuevas por eso quiero saber si las puedo obtener con el olly al igual que lo hace ese tutorial............ por eso si alguno sabe como hacerlo o se prende para ver como es.. JOSHA
|
|
|
19
|
Programación / Ingeniería Inversa / Re: duda dumper
|
en: 20 Julio 2007, 00:20 am
|
aaa me habré confundido con esto que vi De esta forma podremos controlar antes de un volcado los datos que se utilizaran para la realización del volcado a disco. Una vez puestos, podemos alterar las características de una sección (o de todas) para poder usar desensambladores de archivos muertos como el wdasm, en los archivos generados con el Volcador Total.......
|
|
|
20
|
Programación / Ingeniería Inversa / Re: editor pe para encabesados
|
en: 20 Julio 2007, 00:13 am
|
estaba leyendo esto sobre el editor pe, ahora me acerco más a como poder usarlo preferentemente  Editor PE
El editor PE es un complemento al Volcador Total. Algunas protecciones anti-dump alteran el contenido de las tablas de secciones del encabezado PE, bien añadiendo secciones ficticias, eliminando las cadenas de los nombres de sección e incluso añadiendo cadenas de texto o firmas donde deberían haber datos de secciones. Y todo para confundir a los volcadores (dumpers), que utilizan estos parámetros para realizar el volcado.
Con el editor PE del PUPE se puede:
- Editar. Los nombres y los datos de cada sección, incluso si no existen nombres de sección. - Eliminar Secciones. - Volcar secciones enteras a disco.
De esta forma podremos controlar antes de un volcado los datos que se utilizaran para la realización del volcado a disco. Una vez puestos, podemos alterar las características de una sección (o de todas) para poder usar desensambladores de archivos muertos como el wdasm, en los archivos generados con el Volcador Total. esto se encuentra en este post
|
|
|
|
|
|
|