Перейти к содержанию

SiriusED

Пользователи
  • Постов

    65
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент SiriusED

  1. "тут полное определение типа перехватываемой функции" это "typedef тип_который_возвращает_фун-я (__stdcall* funcPtr)(int count);" Правильно я понял? Ну а на счет детурса то что он такое и чем он облегчает жизнь, а то гуглил и там все просто боготворят его... Ну или просто киньте ссыль на русские доки по нему,если есть.
  2. Да, верняк, туплю че-то жесть уже с этим всем, -737304 это переполнение переменной, но могло бы и ошибку кинуть шоль, я ж не ставил unchecked()... Короче да, адрес прочел, но адрес тот еще вышел, в dec не влазит даже в калькуляторе что б перевести в hex... Проблема решена, спасибо.
  3. Да я для примера чисто взял, а вот реальный адрес читай ниже описал всю полностью ситуацию.. Твой способ не работает во обще, по MSDN'ну знаю что пишет что так тоже можно, но не работает во обще... Вообщем тут че-то очень косо... Короче по CE: В адресе 0x1000A2BC лежит 0xFFF4BFE8. BitConverter.ToString(buf) // Выводит "E8-BF-F4-FF" BitConverter.ToInt32(buf, 0).ToString() // Выводит "-737304" Что это за пиз..ц? И это именно с этим адресом такая жопа, ибо взял три других адреса - читаются как надо...
  4. Ну сейчас попробую, но проблема думаю не в этом, взял другой адрес, прочитал тем же кодом, все прочитало отлично и даже со смещениями прочитало все полностью... Ну вот адрес который я пытаюсь прочесть: 0x1000A2BC. Может быть что-то именно с адресом не так? Но вроде все нормально... в CE этот адрес указывает на другой адрес нормально...
  5. Код C# private void ReadMem() { byte[] buf = new byte[4]; int bytesReaded; uint baseAddr = 0xFFF6525C; // В дизассемблере показывает что этот адресс содержит другой адресс 0x546CC80A IntPtr hProcess = OpenProcess(ProcessAccessFlagsAll, false, this.pId); // Тут все нормально получаю хендл ReadProcessMemory(hProcess, (IntPtr)baseAddr, buf, 4, out bytesReaded); // Читаю в buf CloseHandle(hProcess); MessageBox.Show(BitConverter.ToInt32(buf, 0).ToString()); // И вот тут криво(опишу ниже) } Во общем проблема в том, что "BitConverter.ToInt32(buf, 0).ToString()" конвертирует мой массив с конца до начала а не с начала до конца, то есть получается во обще не то... Попробовал "BitConverter.ToString(buf)" Выдало нужный мне адресс(546CC80A), но наобороот все 80 CC 46 5 , и плюс такой конверт выдает только 7символов вместо 8ми... Короче почему так все криво то... Код вроде правильно написал.... Гуглю уже час, у всех как у меня и норм все работает...
  6. Короче молния херанула и пол компа сгорело... слава богам что винт и вся инфа на нем не сгорела... По этому я не мог ответить.. По теме: Вот код кодера который он делал в видео на пример: #include <windows.h> #include <detours.h> DWORD WINAPI Hook_thread(LPVOID); BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) CreateThread(NULL, NULL, Hook_thread, NULL, NULL, NULL); } DETOUR_TRAMPOLINE(int WINAPI MessageBoxA_hook(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType), MessageBoxA); int WINAPI Hooked_MessageBoxA(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType) { return MessageBoxA_hook(hWnd, "Hooked", "Error", NULL); } DWORD WINAPI Hook_thread(LPVOID) { ::DetourFunctionWithTrampoline((PBYTE) MessageBoxA_hook, (PBYTE) Hooked_MessageBoxA); ExitThread(1337); } Вот допустим я узнал адресс своей функции(0xFFFF555), куда в этом коде его надо вставлять, вместо "int WINAPI MessageBoxA_hook" или где? Плюс по коду я не совсем понял как именно работает Detours... Я не хочу скопипастить код и радоваться какой я хацкер, а понять как это все реализовано и работает. Очень бы был признателен если бы кто-то со мной поцяцькался с этой темой.
  7. Да, действительно, убранная\закрашенная галка Writeble, помогла, ну вернее ищет адреса теперь нормально. Поставил бы репутацию, но так как пока что еще не могу походу ставить ее, то на разе спасибо. Потом надо будет почитать нормально о всех функциях CE, что б не задавать таких глупых вопросов..
  8. Во общем ладно, вижу ни у кого нету желания панькатся со мной, ну что ж, буду искать инфу тогда сам, мож какой еще форум найду где не на столько все профи, а то я реально по ходу очень слаб пока что бы понимать эту тему так просто, мне надо разжевывать итд... З.Ы. Если у кого есть ссылки или прочая инфа с чего бы можно реально было начать вникать в эту тему, был бы рад. Всем спасибо, извеняйте за отнятое время.
  9. Что можно предпринять что бы искало?
  10. Да, уже сам додумался. Но тут такой вопрос почему CE в одном случае нашел то, что обведено красным а во втором нет? И даже 1000A2B2 не ищет, хотя этот адрес работает нормально если смотреть что он содержит то все норм показывает..
  11. 1. Через что это лучше всего узнавать? 2. Понял. 3. Не понял. Но меня пока что больше сама логика интересует, что в коде нужно заменить что б это все сработало? Допустим я узнал что: -Функция принимает следующие параметры: func1(int count); -Calling convention функции: __stdcall Какие должны быт мои дальнейшие действия? З.Ы. Понимаю что вопросы могут показаться нубскими, но что тут поделаешь все ж такими были когда-то.. Но я очень хочу въехать в тему даже если будете меня слать нах..й через каждое слово я все равно хочу все знать
  12. Во общем вот есть такой адресс 10000000+A2B2, это статический адрес, и в нем лежит указатель, ну и так далее по цепочке видно нужное мне число. И в принцепе все нормально, но есть одна проблема... Каким образом мне узнать базовый адрес в нормальном виде а не через "10000000+A2B2", как мне узнать результат этой операции? Вот еще одно число искал, и нашел похожую запись через +, но "нормальный" адрес нашел через поиск указателя(обведено красным), Я просто ввел этот указатель в CE и он мне наше статический адрес который содержал этот указатель, а вот этот указатель он искать не хочет, и я не знаю как мне узнать адрес, что б потом программно его искать... Объясните мне как узнать адрес который выражен как "10000000+A2B2". Спасибо заранее.
  13. Да какая онлайн игра, я просто спрашиваю ибо хочу понять саму суть работы хуков, игры нету во обще ни какой, я просто как пример навел что есть игра, исходя из тематики сего ресурса... Меня интересует просто сама тема хуков, а то на видео я так понял показали как хукать системные функции, а вот как хукать пользовательские? Скажем я написал свою "mydll.dll" которая экпортит функцию myfunc1(), и написал exe'шник(простая форма на C++), который импортит эту dll'ку и вот надо перехватить эту самую функцию когда екзешник ее заюзает. Ну или просто игра Need for Speed Rivals, хочу перехватить функцию "getBuildInfo()" из "Engine.BuildInfo_Win32_retail.dll" если должна быть именно указана игра... Еще раз повторюсь: взламывать цели нету, есть цель научится пользоватся хуками нормально, очень уж крутая штука которую очень бы хотел освоить...
  14. Ну я понимаю что вы смотрите на меня как на гамно, но есть ли хотя бы минимальный шанс что вы спуститесь с небес, о великие, и реально подскажете мне хотя бы ссылкой или направлением в какую сторону искать?
  15. Во общем есть игра, точно известно что при нажатии определенной кнопки в игре она вызывает функцию Func1() из somedll.dll, которая лежит в той же папке что и exe'шник. Вопрос: Возможно ли перехватить эту функцию с помощью хука на Detours? И если да, то с чего надо начать? З.Ы. В тему только начинаю въезжать, так что не ругайте, спасибо заранее.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.