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

gmz

Разработчики (+)
  • Постов

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

  • Посещение

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

    26

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

  1. Ты что тут паришь? Индекс EndScene в vTable у 9го директа - всегда 42. Так что это будет совместимо со всеми версиями винды.

    в тех хардкорд примерах хук ставят на проц. EndScene в d3d9.dll = код разный = паттерн не найдет.

  2. 3. DirectxHook, я просматривал соурсы этого изобретия, и обнаружил там поиск по сигнатуре. Т.е. в либе d3d9.dll ищется сигна, с которой потом что-то делают... Это типо используют эксплойты в d3d9 библиотеке?

    можно ставить хуки на коде игры. тогда 100% совместимость со всеми виндами и без костылей.

    они ставят хук на EndScene в той длл. так как d3d9.dll на всех виндах разный бредокод - это создает немеряно проблем. +в тех примерах 99% менюха будет крешить при переходе окно > весь экран тд тп.. +наверно еще и fps жрет постоянными вызовами например ReleaseFont...

  3. Хочу показать пример трейнеров (пока только одного), которые делала бывшая команда TeamX

    хмм он ведь на GTS сделан. тот билдер которые на масм32 ~1998г генерит трейнеры. по крайней мере большая часть говнокода оттуда.

    protection -> поржал

  4. Как это сделать?

    фасм пример. на С логика 1в1

    invoke GetAsyncKeyState,VK_INSERTand eax,0x8000shr eax,0xFcmp [KeySwitch1],alje nnnnnnmov [KeySwitch1],alcmp [KeyDown1],ah ;1 когда нужно: зажал - вкл, отпустил - отклjnz @ftest al,alje nnnnnn@@:.if [KeyStatus1] = ahmov [KeyStatus1],al.elsemov [KeyStatus1],ah.endif....патч код...nnnnnn:

    ps ah всегда 0

    ид процесса? мне больше нравится: FindWindowW+GetWindowThreadProcessId+OpenProcess. зачем ид если это длл?

  5. Бывают баги и случайные нажатия. Мне сказали, что я должен так думать.

     

    Upd: перешел на  GetAsyncKeyState   теперь все работает, правда немного бесит то, что можно нажать один раз на клавишу - а эффект будет будто мы на нее 5 раз нажали.

    Если на условии будет не cout, а, к примеру, взлом памяти - то это может замедлить процесс или привести к крашу. 

    вроде так:if(GetAsyncKeyState(key) & 0x8000 != 0)

    на фасм оно выглядит так (в еах всегда 0/1)

    invoke GetAsyncKeyState,VK_INSERT

    and eax,0x8000

    shr eax,0xF

     

    +тебе надо сохранять результат и проверять зажата клавиша/не

     

    можно хукнуть проц окна игрухи через GetWindowLongW/SetWindowLongW +GWL_WNDPROC +оформить саму проц окна в которой будет твой код, тогда GetAsyncKeyState не нужен

     

    ps этот твой Sleep(100); он че прям в потоке игры? Lol

  6. Вот сейчас вообще этого потока мыслей не понял.

    проехали. читай мсдн

     

     

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

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

    норм она написана. в даном случае это фейл именно А. а то что внутри А функций видел. получается W даже быстрее работает lulz

     

     

    И снова я тебя вообще не понял. В этом случае получается адрес заинжекченной длл-ки, и нет никакой гарантии, что она будет загружена в ту же область пространства, если ее грузить через LoadLibrary самим инжектором, так что ты вообще бред какой-то сказал. Или поясни свои слова.

    PUSH 0

    PUSH 0

    PUSH EDI

    PUSH DWORD PTR [<&kernel32.LoadLibraryW>] <--- видел на С так делалИ. ЭТО не бред xD

    PUSH 1000

    PUSH 0

    PUSH EBX

    CALL DWORD PTR [<&kernel32.CreateRemoteThread>]

     

     

    Что и требовалось доказать - дошло до дела, ты в кусты. Несколькими постами ранее ты говорил, что нужно этот твой cpl инжектор сделать, чтобы выбиваться из толпы нубов. Теперь говоришь, что ЛЮБОЙ может сделать этот инжектор. Тему, про которую ты говоришь, что-то не увидел, может она и есть. Но если она даже есть, и там нет примеров твоего (подчеркиваю - твоего) кода - твои слова остаются лишь словами. В общем, слился ты, дружище. Все с тобой ясно. Не строй из себя того, кем ты не являешься, и перестань пороть чушь, а лучше вместе с ребятами разбирай код. Глядишь, что-то полезное сделаешь. За сим тему обсуждения считаю исчерпанной. Дальнейшие попытки снова ее поднять буду считать оффтопом и (или) флудом и наказывать по всей строгости. Я все сказал.

    *facepalm

    кст поискал FILE_SHARE_WRITE, оказалось без него у некоторых были странные фейлы CreateFile - так что все правильно задал там.

     

  7. Тестанул. Закрылось. Не удивился.

    окее: создай 1000 потоков в пустую проц. потом слип главного потока. посмотри сколько хендлов в диспетчере задач до/после. потом закрой вручную.

     

    Инжект не пробовал, но почему-то старый проект, построенный полностью в ANSI (с А-функциями), прекрасно заработал из этой папки.

    тогда возьми ollydbg2 и посмотри как она зафейлит загрузку ДЛЛ из папки с японским названием. loaddll.exe юзает А

     

    Работать с регистрами без _asm директивы напрямую? Сомневаюсь, что Си так может, хех

    я о ссылке на импорт LoadLibraryW без конструкции "GetProcAddress(hDll, "LoadLibraryA")"

     

    Ты имел неосторожность заикнуться, что чтобы выбиться из толпы нубов надо написать такой инжектор. И ТЫ же строишь из себя тру-проггера. Исходя из твоей же логики, ты должен быть в состоянии написать инжектор, который у тебя попросил Кодер. Жду от тебя этого инжектора откомментированными на инглише исходниками. И если хотя бы часть этого исходника я каким-либо образом найду в гугле, значит, исходник не твой. И, следовательно, ты трепло. Точка.

    такие методы мало кто юзает = будет выделятся. в другой теме (скрытие длл, в флудилке) я накинул как оно выглядит (метод мало чем отличается от ехе варианта), его может ЛЮБОЙ сделать за ~15мин. Кодера вааааашее не понял. код инжекта в DLL_PROCESS_ATTACH остальное НЕВАЖНО.

    автор темы хотел "специфичный" инжект - я подал еще более спец. вариант. очень сомнительно что он не сможет его реализ.

     

  8. воу

    1 тестани. удивишся - винда не закроет его сама +насколько помню на мсдн индусы писали что надо закрывать самому

    2 да ну? создай папку на китайском/японском брось туда длл и пробуй инжект через А

    5 имел ввиду CreateRemoteThread,ebx,0,4096,[LoadLibraryW],edi,0,0 типа напрямую из импорта. C ведь так может хех

    6 на примере вирьтотал и той кучи пародий на антивири - ефект будет

    7 хммм интересно оно создаст файл на шареном диске без?

     

    хз о чем ты. не вижу разницы между инжектом exe+dll и dll которая косит под cpl и которая сама себя инжектит будучи загруженой в rundll32.

  9. чел, меня изза тебя скоро тут забанят :D

    лучше рискни сделать самоинжекторную длку ака cpl, будешь выделятся среди кучи нубов xD

    хмм твой код:

    1 там после CreateRemoteThread ты забыл WaitForSingleObject а потом закрыть хендл потока и освободить память

    2 задай размер стека CreateRemoteThread в 4096 иначе он будет по размеру из хидера ехе игры (иногда там слишком много) 3 параметр

    3 юзай W (уникод) иначе некоторые юзера будут очень часто видеть "Я не смог заинжектить твою библиотеку :(" особенно китайские lol

    4 длку пиши в темп (как на странном видео выше) а не в С. времена хп прошли

    5 зачем делать "GetProcAddress LoadLibrary" если ты можешь добавить ее в импорт инжектора...

    6 вероятно долбаные антивири будут ставить дофига детектов на такой инжектор, так что добавь какую-то примитив шифро или в upx его

    7 правильно создавай файл когда достанешь из ресурса: CreateFileW,[FilePath],GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0

  10. 0. "VirtualProtect работает 4к блоками xD" - идем на MSDN читать описание параметра dwSize.

    1. "проверка на фейл VirtualProtect - явно на любителя костылей" - VirtualProtect не всегда возвращает успешный результат.

    2. "Ставлю протект на весь модуль" - размер модуля может быть пару килобайт, а может быть и пару мегабайт/гигабайт. Модифицируя защиту памяти для всего модуля ты создаешь угрозу безопасности, помимо этого может произойти нарушение работы программы.

    3. "Работаю с ним как с обычным буфером буффером" - рокхаммер тоже модифицирует память напрямую (memcpy).

    0 еще скажи что VirtualAlloc может выделить меньше 4096 байта :D

    1 без посторонней "помощи" - очень сомнительно

    2 размер из пе хидера SizeOfImage. безопасности? нарушение от прав на запись? мде

    3 когда протект на весь модуль - все по другому выглядит, особенно если дофига хуков/нестандартные функции вкл/откл вроде "обмена байтами"

    ps RtlMoveMemory там потому что crt не используется. на С конечно бред его юзать xD

  11. 1. DWORD filler; filler не была инициализирована, а просто объявлена (и в ней может содержаться любой системный мусор. Почему я её не инициализировал? Потому что она служит только заглушкой, поэтому нам абсолютно без разницы какое значение будет в ней содержаться).

    2. blockSize = 4; Даже если ты в VirtualProtect передашь размер блока менее 4х байт,с протект будет выставлен всё равно на 4 байт, я так сделал, чтобы минимизировать время затраты на работу функции VirtualProtect (хоть и на пару тактов процессора).

    3. if (!oldProtect); если oldProtect равен нулю (т.е. мы не передали свой указатель), то в него будет записан указатель на filler, так как 4й параметр у функции VirtualProtect - обязательный.

    4. return ...; нет, функция вернет истину (если результат вызова VirtualProtect вернет число не равное нулю) и ложь (в случае если вызов VirtualProtect вернёт 0).

    VirtualProtect работает 4к блоками xD

    ты собирался сказать что то вроде:

    lea eax,[Buffer]invoke VirtualProtect,[Address],[PatchSize],PAGE_EXECUTE_READWRITE,eaxinvoke RtlMoveMemory,[Address],[Patch],[PatchSize]lea eax,[Buffer]invoke VirtualProtect,[Address],[PatchSize],[eax],eax

    проверка на фейл VirtualProtect - явно на любителя костылей. кст я забил на такое давно. ставлю протект на весь модуль и работаю с ним как с обычным буфером.

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

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

    он ведь системный, длка будет иметь расширение .cpl - 2 клика и инжект готов..

     

    Воу воу... Что такое pe loader? И как его использовать для хайда дллки?

    ручная инициализация модуля. типа выравнивание, обработка релоков/импорта и все это своим базонезависимым кодом.

    можешь примеры поискать. они все правда жуткий говнокод lol

  13. Но я же кодю для пользователя... Он может не догадаться про это. Гораздо практичней сделать это "изнутря".

     

    хммм можно еще сделать самоинжекторную длку ака .cpl (инжект через rundll32.exe). уровень сложности минимум, все в 1 файле и скрыть ее через PEB после инжекта.

    1 проверка "где длл" например GetModuleHandleW имя ехе/длл какой-то из игры, когда ехе/длл нету - инжект, а когда есть - инициализацию

    2 поиск окна/проц/откр. проц.

    3 получение пути к длл GetModuleFileNameW+хендл длл

    4 VirtualAllocEx/пишем в проц путь к длл/создаем поток на LoadLibraryW

    5 ожидаем загрузку, VirtualFreeEx, закрываем хендлы и валим без ExitProcess (rundll32.exe)

    6 когда длл подгрузили первым делом код проверяет "где длл". если GetModuleHandleW вернул не 0 - мы в игре

    7 переходим на инициализацию, делаем hide PEB, дальше все как обычно..

    примерно так. все это должно быть внутри DLL_PROCESS_ATTACH. помоему самый норм метод после pe loader'а

  14. через PEB или пишешь свой pe loader... PEB вариант простой:

    в DLL_PROCESS_ATTACH добавляешь (как такое повторить "правильно" на с++ не спрашивай lol)

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

    х32:

    mov eax,[hInstDLL]mov ecx,[fs:0x30] ;PEBmov ecx,[ecx+12] ;LDR_DATAmov ecx,[ecx+12] ;InLoadOrderModuleListmov edx,ecx@@:mov edx,[edx] ;exe skippedcmp ecx,edxje @fcmp [edx+24],eaxjnz @bmov eax,[edx] ;InLoadOrderModuleListmov ecx,[edx+4]mov [eax+4],ecxmov [ecx],eaxmov eax,[edx+8] ;InMemoryOrderModuleListmov ecx,[edx+4+8]mov [eax+4],ecxmov [ecx],eaxmov eax,[edx+16] ;InInitializationOrderModuleListmov ecx,[edx+4+16]mov [eax+4],ecxmov [ecx],eax@@:

    ps переделать на х64 легко xD

    • Плюс 1
  15. rep movsb, для тех кто в танке, будет повторять запись одного и того же байта, запусти и проверь. А нужно скопировать весь участок.

    Если разжевать - мой код это memcpy по сишному, а твой - memset

    это stosb так делает через еах. memcpy использует movsd когда блок большой.

    его еще можно ускорить если код часто юзается. будет dword'ами копир...

    mov ecx,size

    mov edx,ecx

    shr ecx,2

    and edx,3

    rep movsd

    mov ecx,edx

    rep movsb

  16. [ENABLE]...alloc(newmem,2048)...label(loop)newmem:...push eax // Заталкиваем в стекpush esi // регистрыpush ecx // чтобы восстановить потомpush ebx // оригинальные значенияmov ecx,364 // Записываем количество проходов в циклеloop:lea esi,[oldaddress] // Поместить в ESI адрес старого участка памятиlea ebx,[newaddress] // поместить в ebx адрес-приемникlodsb // загрузить в al байт из [ESI]mov byte ptr [ebx],al // записать в новый адресdec ecx // Уменьшить счетчик циклаinc ebx // Увеличить адрес-приемникcmp ecx,0 // Достигли ли конца цикла?je @F // Если да, выходим из циклаjmp loop // Прыгаем на метку loop, то есть, переходим к следующей итерации цикла@@: // Безымянная метка для указания местоположения выхода из циклаpop ebx // Восстановлениеpop ecx // задействованных pop esi // в циклеpop eax // регистров...
    Как-то так. Где многоточия - там какой-то другой код.

     

     

    что за бред....

    push ecx

    push esi

    push edi

    mov ecx,size

    mov esi,oldaddress

    mov edi,newaddress

    rep movsb

    pop edi

    pop esi

    pop ecx

  17. на сколько я понял этот линковщик для борлада, а я пишу в VS2012 его конечно можно в самом коде подгружать, но как-то геморойно.

    нет. справку почитай. я его даже для masm юзал. он очень круто собирает модуль. опций полно.

    и зачем црт юзать.. на крайняк можно стандартной msvcrt обойтись или что там у тебя :-D

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

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

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