Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
PS : поизучал тут проверки модуля, кто-нить может сказать в чем практическое применение LUA, MPQ чеков, я понял их суть, но по-моему они бесполезны, MPQ - просто проверять, не изменен ли файл внутри архива, так? а LUA - ну я не представляю себе что может палится таким образом.
И еще такой вопрос, уже вне темы, толи лыжи не едут, толи...
PAGE_CHECK - я так понял по коду модуля, перебираются дллки через GetModuleHandle - потом для переданного address + base address dll вызывается VirtualQuery
У меня почему-то эта проверка всегда возвращает E9, хоть какой хэш посылай, точно так же и MODULE_CHECK, мб я хэш неверно формирую
Код:
byte[] buffer = new byte[10];
int address = baseAddr.ToInt32() + 0x4040; // относительный адрес - 0x4040
IntPtr handle = OpenProcess(0x0010, true, p.Id);
uint bytes = 0;
ReadProcessMemory(handle, (IntPtr)address, buffer, 10, ref bytes);
byte[] seed = {0xD4,0x3A,0x3F,0xB3};
HMACSHA1 hmac = new HMACSHA1(seed);
byte[] hash = hmac.ComputeHash(buffer);
HexOutput("Seed: ", 0, seed, seed.Length, true);
HexOutput("Hash: ", 0, hash, hash.Length, true);
Проверял, читает все верно, всмысле совпадает результат чтения и то, что в памяти.