-
Постов
325 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент uhx
-
Так или иначе, мне кажется это просто не вырезанные приколюхи с готовых движков. Вот и все. А фпс в какую сторону?)) У меня например в QC че-то подлагивает, не знаю в чем беда.
-
Я думаю это осталось от Doom 4. Движок ведь тот же.
-
Там же в главном меню снизу-слева есть "контакты". Там можно искать
-
Ну, если будет желание че-то поковырять, то зови и добавляй uhxx ( сраные лимиты на > 3 символов ник ) Посмотрим можно ли как-то вместе дуэль запустить
-
Да, Nyx прикольная)
-
А ведь мы по идее можем зайти в дуэль и сидеть ковырять игру, так?
-
partoftheworlD, не, у меня вместо этого было просто черное окно)) При чем оно реагировало на мышку ( курсор менялся когда наводился на кнопки ) и тд, но картинки не было.
-
Короче... если у кого лаунчер тоже черный, ставьте на BethesdaNetUpdater.exe совместимость с Windows Vista ( пакет обновления 2 )
-
Забрал. Спасибо! Давно жду Quake) Лаунчер пока не работает их, или как?) У меня там просто черное окно.
-
Дык этот чувак пишет на шарпе, и у него там "как внешний чит". Он вообще из этой темы пришел: Поэтому я по его подобию сделал, как у него там примерно. Так то ясен фиг проще дллку закинуть и через нее вызывать, чем внедрять опкоды и выполнять их через CreateRemoteThread
-
Ну чувак... блин. Че за фигня? На C++ это выглядело бы примерно так: BYTE call[] = { 0xE8, 0x00, 0x00, 0x00, 0x00, /* call relative address */ 0xC3 }; /* ret */ // VirtualAllocEx LPVOID pAlloc = VirtualAlloc( NULL, sizeof( call ), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE ); if( pAlloc != NULL ) { // Патчим наш адрес *(DWORD*)( call + 1 ) = (DWORD) foo - ( (DWORD) pAlloc + 5 ); // Тут заменить на WriteProcessMemory memcpy( pAlloc, call, sizeof( call ) ); CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE) pAlloc, NULL, NULL, NULL ); VirtualFree( pAlloc, NULL, MEM_RELEASE ); } В моем случае foo это просто тестовая функция. Код проверил, все работает. Удачи.
-
Та я блин тоже сначала проглядел. Пришлось стирать то, что настрочил. На счет дальних переходов я не знаю. Я справочники по асму читать не умею)) Но насколько я понял, для дальнего перехода нужно использовать FF. Ибо 9A требует адрес в операнде)
-
relativeAddress = function_address - ( hAlloc + 10 ) Почему 10? Потому что там заканчивается инструкция прыжка. И оттуда мы должны считать его. Посчитали? Теперь записывай relativeAddress вместо твоего адреса прыжка. Т.е. после 0xE8
-
Хрень в том что 0xE8 принимает тоже относительный адрес (call near), как и 0xE9. Который он хардкодит) А относительный адрес надо выстраивать относительно адреса инструкции, с которой происходит прыжок.
-
del////
-
Напрмер, если Вы сделаете прыжок на 00 00 00 00, то он попадет на Ваш же ret (C3), который находится прямо после прыжка. Если зададите прыжок на -5, то поток зациклится на этом же прыжке) В этом весь jump near. В jump far же абсолютная адресация, но он и больше. Вроде 6 байт, не помню.
-
В Вашем случае используется относительный прыжок ( relative jump, jump near... ), т.е. опкод E9. Т.е. если Вы скажете ему прыгнуть на 0x05, то это значит что он прыгнет на 5 ячеек вперед. Относительно окончания этой инструкции. Так как память (VirtualAlloc) выделяется в случайном месте, то значит и прыжок надо пересчитывать. Чтоб он прыгал на адрес вашей функции, а не хрен пойми куда. А вообще используйте в таком случае call, а не jmp... как Вам советовал @srg91 Или используйте jump far, раз Вам так нравятся прыжки. Погуглите, а то времени мне не хватит с телефона все напечатать
-
У тебя прыжок 0xE9. Память выделяется в произвольном месте. Сечешь о чем я? Тебе надо пересчитывать адрес прыжка относительно адреса, который тебе отдает VirtualAlloc. Я говорю про эти байты. Не забывай так же, что прыжок строится относительно адреса следующей инструкции. Этот занимает 5 байт, значит их и прибавляй.
-
Если честно, то ничего не понятно) В чем тогда проблема? Какой еще отдельный код? О чем речь?
-
Пиши свой WPM/RPM драйвер через MmCopyVirtualMemory (недокументированная функция). Сам драйвер грузи через dsefix/аналог, если тебе его нечем подписать. Это отдельный софт, использует какую-то там уязвимость с другим драйвером, которая позволяет отключить проверку подписи драйверов, потому что отключить своими руками ее нереально. Или найди другой какой способ, чтобы загрузить DLL в процесс игры. SetWIndowsHookEx вроде как не катит. Вообще по этому поводу много обсуждений на том же UC. Так или иначе, лучше ищи способы для внедрения DLL ( пусть и в связке с драйвером ), потому что экстернал это убого, а вместе с драйвером еще и не всегда надежно ( лично я раз двадцать по ходу разработки ловил синий экран ) А вообще, если я не ошибаюсь, уже есть парочка готовых жирных драйверов типа BlackBone, хотя их я думаю могут детектить, поэтому лучше просто посмотри на их сурсы и напиши свой.
-
Никто никого и не обижает) Статья классная, безусловно, я просто немного дополнил ТСа, пояснив что эта вещь в общем и целом называется calling convention. Ну еще речь шла о том что возможно из-за столь подробного описания стоит перенести тему в раздел для новичков.
-
Да не парься)) Если раньше не встречалось - значит не особо и нужно было. Мне например просто в свое время стало интересно, как вызовы происходят и все такое. Тот же printf в OllyDbg разглядывал сидел, а потом только прочитал про CC. Разберешься, куда деваться)
-
Согласен)) А вообще гуглите calling convention, если до сих пор что-то не понятно. Это обычное согласование о вызове, я даже немного удивлен что люди, которые нехило так продвинуты в RE не знают об этом) Именно из за этого согласования у нас практически всегда адрес нашего класса лежит в ecx ( в начале функции он может перекладываться в какой-нибудь другой регистр, но не суть ). add esp (cdecl) обычно используется после вызова функций, у которых неопределенное количество аргументов. Ну, например тот же printf в Си. А в остальных случаях используется обычно stdcall и thiscall, при которых функция сама через ret чистит стек, так как знает сколько аргументов она принимает.
-
Свободен. Я смотрю ты людям за деньги любишь помогать, а как самому что-то загуглить надо, так сразу на форум бежишь темку создавать, типа, помогите мне. Просто мерзко от таких становится. Человек просит помочь и создает запрос на специализированном форуме, а его в раздел "платные запросы" направляют. Давай тебя туда же посылать? Не смог что-то сделать? Иди пиши в раздел "платные запросы". Форум целиком и полностью держится на энтузиастах, которые готовы помогать людям в свое свободное время, и заметь, никто из них не требует денег за свою помощь.