Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 16:32   #1
CyberMaster
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
По умолчанию Патчинг байт памяти процесса

Если не затруднит, покажите пожалуйста простой пример патчинга байт в памяти процесса.
Спасибо.
CyberMaster вне форума Ответить с цитированием
Старый 25.04.2011, 19:01   #2
CyberMaster
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
По умолчанию

Вот нашел как это делать на примере языка C++ и игры Warcraft. Как бы такое, или хотя бы что-то похожее на это, сделать на C#?

Код:
#include <windows.h>
 
 
 
int main()
 
{
 
    //Find wc3 windows
 
    HWND hwar3=::FindWindow(NULL,"Warcraft III")
 
 
 
    HANDLE hcurrent=GetCurrentProcess();
 
    HANDLE hToken;
 
    BOOL bret=OpenProcessToken(hcurrent,40,&hToken);
 
    LUID luid;
 
    bret=LookupPrivilegeValue(NULL,"SeDebugPrivilege",&luid);
 
    TOKEN_PRIVILEGES NewState,PreviousState;
 
    DWORD ReturnLength;
 
    NewState.PrivilegeCount =1;
 
    NewState.Privileges[0].Luid =luid;
 
    NewState.Privileges[0].Attributes=2;
 
    bret=AdjustTokenPrivileges(hToken,FALSE,&NewState,28,&PreviousState,&ReturnLength);
 
 
 
    DWORD PID, TID;
 
    TID = ::GetWindowThreadProcessId (hwar3, &PID);
 
    //Open wc3 process
 
    HANDLE hopen=OpenProcess( PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|
 
                  PROCESS_VM_WRITE,FALSE,PID);
 
 
 
 
 
    //Write memory
 
    //6F2A08B1     66:BF 0100     MOV DI,0FF
 
    DWORD data=0xBF;
 
    bret=WriteProcessMemory(hopen,(LPVOID)0x6F2A08B2,&data,1,0);
 
    data=0x0F;
 
    bret=WriteProcessMemory(hopen,(LPVOID)0x6F2A08B3,&data,1,0);
 
    data=0x00;
 
    bret=WriteProcessMemory(hopen,(LPVOID)0x6F2A08B4,&data,1,0);
 
 
 
    //Close handle
 
    bret=CloseHandle(hopen); 
 
    return 0;
 
}
CyberMaster вне форума Ответить с цитированием
Старый 25.04.2011, 19:42   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

http://www.google.com.ua/search?q=C%23+OpenProcess и так далее.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер памяти процесса ZaRDaK Общие вопросы Delphi 5 25.09.2010 23:48
N байт из памяти привести к int64_t Роман Радер Общие вопросы C/C++ 2 11.10.2009 20:18
Ноль Байт, хранение в памяти... heart Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 12 20.04.2009 13:28
Редактирование памяти процесса Air Win Api 6 16.02.2008 20:15