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

temtriss

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

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

  • Посещение

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

    7

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

  1. А гугл?) Не, не слышал? Первая ссылка на запрос опенГЛ32 х64

     



    The 64-bit OpenGL import library is included in the Windows SDK and gets installed to %ProgramFiles%\Microsoft SDKs\Windows\<version>\Lib\x64\OpenGL32.lib. The corresponding DLL is named opengl32.dll and is located in %SystemRoot%\system32.

     

    Обьясню, даже 64х битная библиотека имеет в имени 32)))

  2. 18 минут назад, JOBEJlИР сказал:

    эти функции работают

    Ну как я написал выше шарп я не знаю, так чисто логически по коду пробежался)

     

    Так же пробежался по скрипту, а вы уверены, что у Вас варкрафт версии 1.26.0.6401?

  3. 5 часов назад, JOBEJlИР сказал:

    не работает инжект к game.dll

    Как Вас понять, не работает инжект к.... Иньекция происходит в процес... dll - динамическая библиотека... 

    Честно скажу, шарп я не знаю и очень не люблю... Читать умею, но могу понять не правильно...

    В первую очередь обращу внимание что ваша void функция GetProcessID имеет ретурн(может в шарпе так принято, но тогда она возвращает, только в случае получения результата) или в шарпе этот тоже самое что break? В общем прервите цикл если мы нашли результат. нефиг ему гонять!)

    Далее, опять же цикл... 

    5 часов назад, JOBEJlИР сказал:

    ProcessModule module in Warcraft.Modules

     Вы так же не выходите из цикла, опять же я ХЗ как работает шарп, но после получения нужной нам dllки надо бы цикл закончить...

    Добавив либо return true либо  break... ну может знатоки скажут больше, но циклы я бы посоветовал поправить) Особенно второй))

  4. 12 часа назад, uhx сказал:

    ахватывающие экран, тоже внедряются в игру?

    Могу сказать даже так, фрапс еще и рисует в  стороннем Dx окошке свои данные(FPS) и что-то я не слышал случаев банов из-за фрапса)

  5. В 21.09.2017 в 17:05, IzerodayI сказал:

    как я понял , надо найти прицел так

    Хм... а по углу обзора не канает?

    Что-то типо этого:

     

     


    Тут nY, nX - needed

    Останется добавить на остальные стороны(если nX и nY  больше чем твои и т.д.), а так же добавить ось Z.

        if (nY > myY && nX <= myX)
        {
            Ydiff = nY - myY;
            Xdiff = myX - nX;
            // Умножаем на 57.29578 для перевода из радиан в градусы.
            AngleA = atan(Xdiff / Ydiff) * 57.29578;
            
            tmp = 0 - AngleA;

        }

     

    Я таким образом делал наведение(facetotarget) на цель для бота. 

    • Плюс 1
  6. @partoftheworlD Замечательная статья :)

    В 21.09.2017 в 19:28, TheErel сказал:

    но тут на примере непонятно

    А что тут не понятного?

    Открыл был engine.dll в IDA Pro... Найдена в дллке строка, просмотрено какие именно функции используют данную строку, как я понял в этом случае только одна функции использует эту строку. Ищем первый вызов(call) перед использованием данной строки(в данном случае перед помещением ее в стэк) Переходим по функции, далее смотрим где заполняется реест ECX(В данном случае в этой строчке lea ecx,[ebp-1C]), далее открываешь ЦЕ тлт любой дебагер, открываешь данную функцию и ставишь бряк на эту инструкцию, брякаешся и добавляешь в таблицу адрес из ebp-0x1C

     

  7.     Всем привет. 
        
        !!!Перед прочтением данной статьи рекомендую прочитать о Соглашении о вызовах(Calling Convention)!!!
        
        Эта небольшая статья о вызове функций из приложения. 
        Если будет не понятно, то могу снять видео гайд по вызову функций.

     

        Подопытным кроликом будет заранее заготовленное приложение.
        Вот его код:

        

    Скрытый текст
    
    	#include <Windows.h>
    	#include <iostream>
    
    	using namespace std;
    
    	bool function001()
    	{
    		cout << "We call function001" << endl;
    		return false;
    	}
    
    	void function002()
    	{
    	
    		cout << "Function002 called!" << endl;
    	}
    
    	void function003(char* txt)
    	{
    		cout << txt << endl;
    	}
    
    
    
    	int main()
    	{
    		while (!GetAsyncKeyState(VK_INSERT))
    			{
    				if (GetAsyncKeyState(VK_F1) & 1)
    				{
    					if (!function001())
    					cout << "Function001 - return false :(" << endl;
    				}
    			if (GetAsyncKeyState(VK_F2) & 1)
    			{
    				function002();
    				function003("Function003 called! this is char* param of function003");
    			}
    	}
    	return 0;
    }

     

     

        Примерно так выглядит наша программа:


         bkt4vsOXI0E.jpg
         
         Думаю и так понятно, что приложение по нажатию на F1 запускает функцию 1, а по нажатию на F2 функцию 2 и 3
         С помощью x64dbg мы попробуем разобратся как вызывается функция:
         Будем искать строчку из функции3. Для этого ищем ссылки на строки, как показано на скрине
         
         Поиск ссылок на строки в x64dbg:
         2Aat_aS6uQU.jpg
         
        Находим там: "Function003 called! this is char* param of function003" 
        
        И смотрим:
        Сдесь PUSH и CALL
        Пологаю это то что нам надо, пушим аргумент в стек(наша строчка) и вызываем функцию.
        Перед прочтением статьи я рекомендовал прочитать про соглашение о вызове.
        Сейчас это бы пригодилось, но я зарание оговорюсь, что это C-Declaration  - __cdecl:
        
        Примерный внешний __cdecl
        push     ebp
        mov        ebp, esp
        // Пушим аргументы вызова
        push arg1
        push arg2
        // вызываем функция
        call ourFunc
        // чистим стек за нашей функцией
        add esp, 8
        
        Давайте посмотрим на скрин:
        
        Интересующая нас функция:
       6zpaPUDUXEk.jpg
        
        Ну что же самое интересное, мы знаем какое используется соглашение о вызове, мы знаем параметры которые принимает функция.
        Давайте теперь узнаем смещение функции относительно базового адреса, для этого открываем калькулятор, выбираем 16тиричную систему,
        Адрес функции у меня 009С24С0.
        Из адреса функции вычитаем Базовый адрес, в моем случае это 009B0000
        009C24C0-009B0000=124C0 Запоминаем, смещение, оно нам понадобится!
        

    Давайте напишем dll'ку которая по нажатию на F10 будет запускать функцию3.
        
        Вот код:

         

    Скрытый текст
    
    	#include <Windows.h>
    	// Теперь нам нужно обьявить портотип функции которую будем вызывать!
    
    	typedef void(_cdecl * CALLFUNC003)(char*);
    	CALLFUNC003 fn3;
    
    
    	// Поток.... 
    	DWORD __stdcall NewThread(LPARAM)
    	{
    		while (!GetAsyncKeyState(VK_INSERT))
    		{
    			if (GetAsyncKeyState(VK_F10) & 1)
    			{
    				// Получаем базовый адрес
    				DWORD base = (DWORD)GetModuleHandle(NULL);
    				// Получаем адрес функции.
    				fn3 = (CALLFUNC003)(base + 0x124C0);
    				// Вызываем нашу функцию ;)
    				fn3("Any text \n");
    			}
    		}
    		return 0;
    	}
    
    	BOOL __stdcall DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserverd)
    	{
    		switch (dwReason)
    		{
    		case DLL_PROCESS_ATTACH:
    			MessageBoxA(NULL, "Injected...", "caption", MB_ICONINFORMATION);
    			CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)NewThread, hModule, NULL, NULL);
    			break;
    		}	
    
    		return TRUE;
    	}

     

       

        Код достаточно прост, думаю пояснения тут не нужны. Собираем и иньжектим DLLку, 
        Для проверки можно заиньктить с помощью CE. 
        

     

        Результат:     
       HuOMapRIq6g.jpg
        
        Всем спасибо! :)

     

    P.s. Сильно не пинайте если что-то не так, первая статья! С радостью выслушаю конструктивную критику :)

     

    • Плюс 3
  8. 2 минуты назад, partoftheworlD сказал:

    Их не убрали

    Создать подпись я себе не могу.

     

    2 минуты назад, partoftheworlD сказал:

    Настройки -> Подпись

    А можно по подробнее, у меня нету таких пунктов. Может Вы можете дать прямой линк?)

  9. 38 минут назад, Rina565 сказал:

    я себе отредактирую

     

    38 минут назад, Rina565 сказал:

    только мне, или еще другим игрокам?

    Чисто логически подумай. У тебя есть доступ к серверу? ты можешь подменить файл на сервере? Нет?! Тогда как оно будет работать у других?

    Я фидлером не когда не пользовался но быстренько прочитал, это же прокси для HTTP/HTTPS позволяющий изменять трафик.

     

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

  10. Это реально. Но это придется не кисло копаться и искать функции расшифрофки, просто перехватит трафик проблем нету. Можно хукнуть send() и recv() правда если я правильно понмю, подменить пакет таким образом нельзя. Да и сами они будут уже шифрованые) 

    Сырцы залью, в личку и обьясню(работает только 32х бинтая версия, в настройках ингры надо принудительно dx9 включить, иначе он стартует 64х битную версию и падает) как собрать/запустить. Если по коду вопросы будут, можно так же в личку.

    P.s. сразу скажу что мой код на C++ выглядит так, не пугайся!)sloupok_152907619_orig_.jpg

    • Плюс 2
  11. Если ТС все еще интересуется темой. Игра очень не дружелюбная для взлома)) Это очень объектно ориентированный С++. 

    Да и времени у меня не так много. Но все же если интересно, реализовал Мультиклиент/ЗумХак/Вход без проверки обновления и проверки целостности клиента/ кривой, не правильный вызов части функции перемещения(Происходит анимация движения и телепорт, телепорт не по указаным координатам, так что про это можно забыть пока я не доразбирусь), поиск всего этого был по сигнатурам, так что кроме мультиклиента все перекочевало в 3.0, мультиклиент я уже поправил.

    P.s. Если интересно в личку могу скинуть свои безИСХОДНИКИ(да свой код я иначе назвать не могу), написано все на С++.

    • Плюс 1
  12. Скорее всего значения теперь проверяются на сервере. Если Вы говорите, что раньше работало, а сейчас нет, то скорее всего так и есть.

    P.s. я даже не представляю как работать с играми на андроид через СЕ.

  13. 45 минут назад, uhx сказал:

    Эххх, щас бы подсветку синтаксиса ASM добавить...

    Да действительно, было бы удобно :)

    1 час назад, uhx сказал:

    Если это большая проблема

    Я думаю это совсем не проблема :)) На том же васме есть!)

  14. 12 часа назад, MasterGH сказал:

    Плюсы. Перенос тем, помощь новичкам, чистка тем, изменения заголовков тем

    Замечательное нововведение. 

    Особенно

    12 часа назад, MasterGH сказал:

    изменения заголовков тем.

    Поздравляю!

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

    Поздравляю с переводом!

     

  15. Спасибо!... пойду покурю MSDN по этому поводу, хотя из того, что я уже прочитал, проще продолжать использовать онлайн Асемблер/Дизасемблер. 

     

    1 час назад, Xipho сказал:

    Можно, но указатель ты на такой кусок кода не получишь.

    Ну а учитывая этот факт, то это совсем печально, в данном случае этот патч я генерирую для инъекции dll в процесс, через контекст потока.

     

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

  16. Доброго времени суток, есть такой вопрос: 

    Можно ли использовать Инлайн Асм для генерации байт кода? 

    Пример:

    unsigned char MEGAPATCH[] = {0x68, backStr[0], backStr[1], backStr[2], backStr[3], 0x9C, 0x60, 0x68, iDllStr[0], iDllStr[1], iDllStr[2], iDllStr[3], 0xB8, apiStr[0], apiStr[1], apiStr[2], apiStr[3], 0xFF, 0xD0, 0x61, 0x9D, 0xC3  };

    А вместо этого, использовать что-то типо этого для генерации:

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

     

    _asm

    {

    PUSH backStr

    PUSHF

    PUSHA

    PUSH iDllStr

    MOV EAX, apiStr

    CALL EAX

    POPA

    POPF

    RET 

    }

     

     

  17. В первую очередь хочу извиниться за некромантию и подъем мертвой/закрытой темы. А именно многооконки для PoE.

    Вчера я реализовал свой рабочий вариант, но я очень заинтересован предложенным вариантом в теме. А именно через мьютекс...

    На сколько я знаю закрыть мьютекст из вне крайне геморройно (хотя хз, но конкретной и рабочей реализации я не видел), из чего возникает вопрос, если это имеет столько проблем, почему бы на лету не патчить 1 байт?) 

    Я реализовал свою многооконку так: 

    Запускаю суспендед процесс, делаю патч на 1 байт "\xEB"(JMP), пуляю основной поток и все готово. Кол-во окон не ограничено. 

    Так вот может снятие мьютекста чем-то лучше? И очень бы хотелось увидеть реализацию, если конечно не сложно.

    P.s. да хукнуть CreateMutexW возможно... но тут вроде были ответы о снятии мьютекса, а не о препятствии созданию. 

  18. В 07.07.2017 в 10:15, keng сказал:

    Ultimap

    Ну у меня ультимап не работает к сожалению :(  А какие-то еще варианты есть? :))

     

    В 07.07.2017 в 08:51, Merlin сказал:

    ЛКМ (клик левой кнопкой мыши)

    Ну вот, что-что а движение я знаю как найти и реализовать :)) 

    Можно, а точнее даже нужно! Берем свои координаты, ставим бряк на запись, двигаемся) смотрим куда брякнулись. Смотрим откуда пишется... там уже обычно становится ясно. В последней игре в которой я реализовывал это было все просто, через стэк передавалось значение 5.0 или -5.0(скорость перемещения) и все))) 

     

    Ради интереса решил скачать PoE и сам покопаться) Сейчас попробую глянуть :))

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

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

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