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

DaVilka

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

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

  • Посещение

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

    1

Сообщения, опубликованные DaVilka

  1. В 21.10.2019 в 21:12, Fleynaro сказал:

    1) Все ли верно? то есть действительно получится все так просто, как я и описал? можно ли так нарисовать объемную 3d модель?

    Получится, но чтобы не парится с поиском можно хукнуть функции BeginScene(начало отрисовки) или EndScene(конец отрисовки) и между ними рисовать как в своем приложении, но для начала тебе нужно получить директикс девайс процесса, так как девайс может быть только один на процесс, на пример хукнув функцию CreateDevice.

    Адреса не экспортируемых функций директикса можно получить просто создам свое приложение которое будет юзать твою функцию директ икса, в девятом диретк иксе на пример CreateDevice == Direct3DCreate9Ex + 0x16139,  EndScene == Direct3DCreate9Ex + 0x15ACA

     

    Но на счет перекрывания не уверен, но скорее всего тебе понадобятся матрици как минимум мировая

    И это если твое приложение использует сугубо функции директ икса, если же какой то движок то все гораздо сложнее

  2. 43 минуты назад, zorinchel сказал:

    как нормально вывести окно одной игры поверх другой

    Ты не выведешь другое окно поверх первого если первое находится в полноэкранном режиме без жесткого вмешательства в процесс игры. Своим кодом ты просто запускаешь новый процесс.

    Простой вариант - запустить первую игру в оконном режиме, убрать рамку и масштабировать в расширение экрана и уже по верх него запускать другое окно, но опять же в виндовсе может быть активным только одно окно.

     

    • Плюс 1
  3. 2 часа назад, TimaS сказал:

    делал сам, под vs 13 а вот классы функции для написания в память, скачал

    Там надо компилировать в Release что бы вектор не ругался, а так там еще объявлены функции но не прописаны их реализации, у меня компилятор не хавает

  4. 24 минуты назад, TimaS сказал:

    Да

    Разобрался, выкинь этот сурс :D либо пробуй компилировать в 17 студии(я так понял он под нее делался?)

  5. 2 минуты назад, TimaS сказал:

    VS 2013 Ultimate update 4 [12.0.31101.00]

    Функция шаблон не может возвращать интовое значение (мб в 17 студии что то изменилось хз), смени return 0; на return x; оно не на что не влияет, но у меня все равно не скомпилировалось как будто какой то либы не хватает

  6. 2 минуты назад, TimaS сказал:

    Спасибо! помогло

    Исправил

    А как быть с этим:

      Скрыть контент

    -- Сам код:

      Скрыть контент

        val writeMem(DWORD addr, val x)
        {
            WriteProcessMemory(handle, (LPBYTE*)addr, &x, sizeof(x), NULL);
            return 0;  // тут ошибка
        }

     

    У меня компилируется, кинь архивом проект если можешь

  7. 1 час назад, TimaS сказал:

    Не помогло ?

    Не помогло ?

    Смени в настройках проекта кодировку на мультибайтовую либо смени все char на wchar_t и функции на юникодные

     

    10 часов назад, TimaS сказал:

    addr += vect;

    тут наверное должно быть 

    addr += vect[i];
  8. Собственно сабж, как получить координаты отдельной текстуры? Вот с помощью хука DrawIndexedPrimitive можно подсветить одинаковые текстуры, и сделать вх. А как подсветить, на пример, первую текстуру из десяти одинаковых? И если я хочу написать возле нее текст, то как узнать ее координаты, что бы при смене положения камеры, надпись находилась рядом из текстурой?

    И еще один вопрос, вот на окне игры выводится текст, как узнать его координаты? Есть идея, хукнуть CreateFont, сохранить указатели на все создаваемые фонты, а потом на каждый фонт поставить хук на DrawText, и уже из него выдерать rect, может есть способ менее геморный?

  9. 58 минут назад, partoftheworlD сказал:

    Лол нет, я имел ввиду рекурсивно переписывать все винапи которые тебе нужные. Все вложенные внутрь функции и т.д

    аа, а как это поможет? Вообще,  нужно отлаживать, смотреть на что и как реагирует валв, да и если верить посту тса, то он не знает, будет ли вообще реагировать вак?

    Для директа, как варик, можно юзнуть враппер

    5 минут назад, DaVilka сказал:

    аа, а как это поможет? Вообще,  нужно отлаживать, смотреть на что и как реагирует валв, да и если верить посту тса, то он не знает, будет ли вообще реагировать вак?

     

     

  10. 3 часа назад, partoftheworlD сказал:

    Зачем отладчик? Почитай про отладочные регистры, а конкретно про dr7

    окей, возник второй вопрос,

    пытаюсь перехватить вызов меседжбокса

    поставил я бряки на dr7/0, запили функцию которая отлавливает исключения

    Спойлер
    
    long __stdcall ExceptionCode(PEXCEPTION_POINTERS exInfo)
    {
    	if (exInfo->ExceptionRecord->ExceptionCode == STATUS_SINGLE_STEP)
    	{
    		printf("error message\n");
    
    		//return EXCEPTION_CONTINUE_EXECUTION;
    	}
    
    	return EXCEPTION_CONTINUE_SEARCH;
    }

     

    Исключение отлавливается, но после отработки этой функции процесс отваливается если возвращать EXCEPTION_CONTINUE_SEARCH,

    если EXCEPTION_CONTINUE_EXECUTION то функция перехвата исключений вызывается до бесконечности.

    Я так понял, что неполадка в возврате управления, но как его вернуть? Перед вызовом EXCEPTION_CONTINUE_EXECUTION нужно снимать хук из меседжбокса?

  11. Собственно сабж, возмож но ли подключить отладчик из под длл внутри процесса?

    На первый взгляд мне показалось что ничего сложного, но функция DebugActiveProcess

    замораживает все потоки, в том числе и тот, и которого вызывается, в итоге она не срабатывает.

  12. Можно поднять межпроцессное взаимодействие, я поднимаю сокет, так как у меня много функций, но можно и пайп, и вызывать что угодно, когда угодно, сколько угодно, откуда угодно :)

    Если в длл одна мелкая функция, то и длл можно не подгружать, вписать в процессе в свободное место по статическому смещению свою функцию, и через тот же удаленный поток вызвать функцию уже по известному адресу

  13. 4 часа назад, horror113 сказал:

    pause() -- поставить на паузу

    unpause() -- снять

    Впервые слышу о таких функциях.

     

    Заморозить процесс можно при помощи NtSuspendProcess, но она вроде как до XP винды работает.

    На винде повыше заморозить процесс нельзя, а можно , как сказал человек выше, заморозить все потоки процесса в том числе и главный, но после его разморозки ты можешь получить побочные эффекты

  14. 7 часов назад, Garik66 сказал:

    Пока у тебя ID равно 1 байту, то:

     

    11 час назад, Dino сказал:

    судя по скрину больше похоже, что 17 байт. 

    EAX хранит 4 байта, al 1 байт

    4*4+1 = 17

     

    ECX в роли итера, полагаю что-то вроде add ecx,4

     

    ID всегда равен 1 байт, он пишется из al по адресу 6BB6DFA0, ecx == 00000000

    Дальше идет тело, dword( 4 байта) -> dword -> dword -> dword -> char(1байт всегда равен 00 хз почему его не записало

    Во второй инстукции, где пишется eax, ecx == 00000001

    7 часов назад, Garik66 сказал:

    Для того, чтобы было 18 раз обращение, нужно было написать так свою прогу, т.е. записывать по байтно.

    Собственно а как щас пишет, 4 байта eax?

     

     

     

     

  15. По адресу 6BB6DFA0 находится буфер, в который пишутся байты в зависимости от их размера.

    Я ставлю бряк на запись по этому адресу и получаю вот это

    Скрытый текст

    image.png

    С асм я знаком только в общих чертах, по этому не могу понять что здесь происходит? :D

    Байты идут по адресу 6BB6DFA0++ то есть 6BB6DFA1->6BB6DFA2->6BB6DFA3 ...

    Первый байт - ид пакета, дальше тело. На скрине записывается пакет в 18 байт.

    Но не понятна инструкция, получается, ecx = 01234567(на пример) и, с каждым байтом ecx увеличивается на пару байт, и прибавляется статический адрес 6BB6DFA0?

    Но почему тогда вызывается всего 5 раз, если пакет 18 байт, то и вызывается должно же 18 раз? 

×
×
  • Создать...

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

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