|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
, всё, работает, пасяп))) прошёл тест по использованию пары функций. я так понял, код этого теста находится в m02.dll. 1) у вас есть код этого файла? аппаратурано при желании можно самому откомпилировать его из исходников 2) к чему вообще нужны m04.dll и msvcr100.dll? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 19:58 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
все сорсы там есть msvcr100.dll нужна для модуля m02.dll при большом желании наверное можно переделать прогу так чтобы она работала и без msvcr100.dll но просто такое правило что все cpp проекты после компиляции требуют msvcr100.dll (это для 10 студии) а все бейсик проекты аналогично требуют msvbvm6.dll (это для vb6 а другого нет в отличие от cpp у которого есть куча версий до 10) все самплы которые запускаются находятся в m04.dll m04.dll для того и нужен чтобы писать в нем свою логику по нажатию кнопок управлением курсором мыши а код который делает inject кода в процесс вынесен отдельно и вникать в то как он работает даже не нужно достаточно написать запрос на inject кода в процесс или на uninject (это тоже возможно сделать) те модульный подход захотим можем алгоритм инжекта переделать не трогая логику можем наоборот алгоритм логики переделать не трогая инжект кстати интересно что SetCursorPos надо использовать свою исправленную для работы в игре а SendInput исправлять наоборот не надо исправленная не будет работать а будет работать только оригинальная функция выбор какую функцию использовать оригинальную или нашу исправленную делается в Injection01ImportM.bas SetCursorPosApi но SendInputWinApi итак чтобы написать что-то свое идем в TickProcess из TickProcessor01C.cls и пишем что хотим пользуясь примерами которые там есть ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 20:16 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, а почему m04.dll должен быть именно dllкой? m02 - ведь уже внедряется в ЭК, я представлял, что m04 будет программа, которая отправляет данные внедрённой dllке ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:14 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
я упростил себе жизнь сначала я думал сделать отдельную прогу которая будет посылать команды а внедренная прога будет эти команды выполнять но подумал что так сделать гораздо сложнее поэтому просто загружаю нужный код в процесс эклавы и выполняю его да и причин делать отдельно посылку команд отдельно исполнение я не вижу ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:23 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
кстати, есть странная идейка... что, если 1) переименовать прогу 1.ехе в 1.txt, открыть. 2) переименовать osk.exe в osk.txt, открыть. 3) копировать содержимое файла 1.txt в osk.txt. 4) переименовать osk.txt в osk.exe. по логике, для системы, а значит и для игры, файл osk.exe будет распознаваться как ЭК, но на самом деле будет прогой? сам не могу проверить, при ктрл+с ктрл+v не распознаются некоторые символы(квадратики), а vb6 не понимает, где конец файла, и останавливается на первых строчках считывания... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:26 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратурапоэтому просто загружаю нужный код в процесс эклавы и выполняю его это ведь m02.dll? а посылает ей команды m04.dll? т.е. одна дллка посылает команды другой дллке? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:29 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторесть странная идейка ничего не понял зачем так сложно ведь то же самое можно сделать просто назвав свой файл osk.exe и переписав его на место оригинальной osk.exe ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:29 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, пробовал, но игра всё равно различает, ведь не совпадают производитель, подпись, фирма и тд ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:32 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторэто ведь m02.dll? а посылает ей команды m04.dll? т.е. одна дллка посылает команды другой дллке? нет неверно m02.dll НИЧЕГО не делает кроме внедрения в чужой процесс после внедрения она загружает m04.dll и передает управление m04.dll после того как m04.dll TickProcess отработал исполнение внедренного кода завершается но модуль m02.dll не выгружается (его можно выгрузить с помощью модуля управления инжектом m03.exe) а вот модуль m04.dll выгружается после того как он отработал его выгружает m02.dll те правило такое кто кого загрузил тот того и выгружает m03.exe загрузил m02.dll, m03.exe его может и выгрузить m02.dll загрузил m04.dll после того как m04.dll стал не нужным (после отработки TickProcess) m02.dll его выгружает ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:37 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, понятно, спс, что объяснили ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 21:41 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура SendInputCodeBytesPath = _T("c:\\protect.08\\data\\SendInput.code.bytes.bin"); это в m02.dll а как отказаться от работы с binами? вы говорили, что для sendinput не нужно менять dllки, тогда можно юзать user32.dll напрямую, а не вырезать из неё функции. как работать напрямую с user.32? где и какие придётся произвести изменения? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:12 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторкстати интересно что SetCursorPos надо использовать свою исправленную для работы в игре а SendInput исправлять наоборот не надо исправленная не будет работать а будет работать только оригинальная функция выбор какую функцию использовать оригинальную или нашу исправленную делается в Injection01ImportM.bas SetCursorPosApi но SendInputWinApi выбор использовать или не использовать функции делается в бейсике но m02.dll исправленные функции всегда подгружает SetCursorPos не работает если ее не исправить естественно если исправление функций не нужно то можно этот код подгрузки исправленных функций убрать из m02.dll ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:29 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратураестественно если исправление функций не нужно то можно этот код подгрузки исправленных функций убрать из m02.dll хорошо бы, но m02.dll явно не на vb сделана... я хотел вообще убрать SetCursorPosApi и поставить функции не через bin файлы, а напрямую через user.dll....... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:33 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, а исправленные в смысле... игрой исправленные? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:42 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторя хотел вообще убрать SetCursorPosApi и поставить функции не через bin файлы Injection01ImportM.bas в функции SetCursorPos01 заменить вызов SetCursorPosApi (эта функция находится в m02.dll можно увидеть по ее объявлению Public Declare ... lib "m02") на вызов SetCursorPosWinApiApi (эта функция находится в user32.dll можно увидеть по ее объявлению Public Declare ... lib "user32") ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:43 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
автора исправленные в смысле... игрой исправленные да игрой испорченные и нами исправленные ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:44 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратураавтора исправленные в смысле... игрой исправленные да игрой испорченные и нами исправленные т.е. если запустить прогу, потом игру, то прога работать не будет? т.к. игра не успела исправить lkkre/// придётся использовать прогу только после включения игры... ясно... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:46 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторесли запустить прогу, потом игру, то прога работать не будет нет неверно все с точностью до наоборот сначала надо запустить нашу прогу чтобы она загрузилась в процесс в процесс эклавы я НЕ ПРОВЕРЯЛ но у меня подозрение что защита игры не даст сделать инжект в процесс эклавы когда игра запущена если даст то тогда без разницы исправила защита игры функции SendInput и SetCursorPos или не исправила нам без разницы у нас в любом случае есть обе и исправленная игрой и не исправленная игрой не исправленная игрой грузится из *.code.bytes.bin поэтому ее защита никак не исправит а вот какой из них пользоваться решаем мы когда пишем свои вызовы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:54 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, понятно... я планировал отказаться от bin файлов, т.к. к разным версиям винды будут разные обрезкии dllок... сделать универсальную прогу... буду думать над этим завтра, огромное спс ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2012, 23:58 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
еще раз SendCursorPos защита игры исправляет на уровне пользователя (в user32.dll) и она перестает работать чтобы заработала надо свою правильную SetCursorPos загрузить SendInput защита игры исправляет причем и на уровне ядра и на уровне пользователя (в user32.dll) наши исправления только на уровне пользователя поэтому защита игры побеждает но из эклавы защита игры пропускает SendInput но только для клавиатуры и для нажатия на мышь а для отпускания мыши не пропускает только это свойство защиты и позволяет нам вызывать SendInput но из других программ мы вообще не сможем ничего посылать тк защита не пустит не знаю это баг или фича защиты ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 00:01 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторразным версиям винды будут разные обрезкии dllок ну так для каждой версии можно создать такой файл не так много этих видов ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 00:03 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратураавторразным версиям винды будут разные обрезкии dllок ну так для каждой версии можно создать такой файл не так много этих видов да, но я ведь не умею выносить нужные функции из dllки в txt) аппаратурасначала я думал сделать отдельную прогу которая будет посылать команды а внедренная прога будет эти команды выполнять но подумал что так сделать гораздо сложнее поэтому просто загружаю нужный код в процесс эклавы и выполняю его да и причин делать отдельно посылку команд отдельно исполнение я не вижу пытаюсь это написать... т.е. exe отсылает m04.dll клавиши, которые нужно нажимать(только sendinput, в будущем и курсор мыши). но что-то не приходит в голову, как связываются dll и exe... если только exe пишет в txt, а dll считывает, но всё, наверно, намного проще.аппаратураDo While True в коде часто этот цикл... дословно: делать, пока true? что это значит? true чего? в коде ведь ничего не меняется, когда наступает false? p/s пытаюсь объединить всё в один проект, работающий с 1 нажатия... если получится, пришлю, будут первые 2 рабочих бота для pro онлайн игр) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 09:57 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторно я ведь не умею выносить нужные функции из dllки в txt) так и не надо все что ниже xp.sp.3 и рассматривать не стоит есть для 1 xp.sp.3 2 win.7.sp.1 3 win.7 можно сделать такой файл а может он даже окажется таким же как и для win.7.sp.1 те на сегодняшний день другого нет надо ждать win.7.sp.2 или xp.sp.4 авторDo While True Do While True lngErrorBool = SetCursorPos() If lngErrorBool = 0 Then Exit Do EndIf lngErrorDword = SendInput() If lngErrorDword = 0 Then Exit Do EndIf Exit Do Loop те мы выполняем последовательность действий но каждое действие может завершится с ошибкой если происходит ошибка мы не хотим продолжать а выходим из функции можно не писать Do While True Loop тогда надо использовать ситкаксис с goto lngErrorBool = SetCursorPos() If lngErrorBool = 0 Then goto ExitLabel EndIf lngErrorDword = SendInput() If lngErrorDword = 0 Then goto ExitLabel EndIf ExitLabel: каждый автов сам выбирает как ему больше нравится можно еще так lngErrorBool = SetCursorPos() If lngErrorBool <> 0 Then lngErrorDword = SendInput() If lngErrorDword <> 0 Then lngErrorDword = SendInput() ' do something EndIf EndIf EndIf но в этом способе очевидное неудобство из-за вложенности текст все время смещается вправо если много действий то перед текстом бодут большие отступы авторчто-то не приходит в голову, как связываются dll и exe способов связи между двумя процессами много и многие из них даже могут связаться по сети те с удаленным компьютером выбрали файл для связи хорошо это самый распростаненный способ для связи на локальном компе но проблема в другом как 1 процесс должен сообщить 2 процессу что надо выполнить функцию SetCursorPos? а вот как 1 закодировать имя функции например эта функция будет иметь Ид = 1 2 поместить в буфер информацию о вызове а именно BYTE* buffer buffer[0] = 1 buffer[1] = lngX buffer[2] = lngY первый элемент это Ид функции второй элемент это lngX третий элемент это lngY 3 передать этот буфер другому процессу ну а второй процесс должен все это раскодировать и выполнить видно что для каждой функции надо писать свою упаковку распаковку что не очень удобно вообщем это долго пусть и не сложно но аккуратность нужна а у SendInput один из параметров это целый массив и его тоже надо правильно передать повторюсь не вижу острой необходимости так делать те при этом подходе получаем кучу дополнительной работы а при текущей реализации все делает (причем именно те же действия что я описал) Com подсистема авторобъединить всё в один проект, работающий с 1 нажатия ну запустите m03 так же с одного нажатия все работает поубирайте msgbox я могу и из m02 убрать msgbox только бывают случаи когда ошибка не возвращается из системного вызова а внедрения не произошло если есть msgbox то сразу видно что внедрение есть а так о внедрении можно узнать только косвенно а именно если вызвался наш TickProcess из m04 значит внедрение есть ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 15:17 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, постепенно осваиваю код, скоро примусь за обработку окна игры... оч долго пытался полностью убрать setcursorpos из проекта, несколько раз переносил с одной винды на другую, понял, что C:\Protect.08\data\SetCursorPos.code.bytes.bin прописан в m02.dll. ну и фиг с ним. пусть файлы лежат, а юзать setcursorpos лучше из exe, чем передавать внедрённым в ЭК dllкам, мороки меньше. пытаюсь вспомнить, как юзать функции, записанные в binах из обычного exe... можно как и раньше, просто использовать всю user32.dll, но мб получится и с binами. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 18:40 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
естественно SetCursorPos можно исправлять в любом exe она ведь в ядре не перехватывается защитой для этого можно использовать раннее написанные примеры вот только вариант с LoadLibraryEx(,,DONT_RESOLVE_...) на котором мы в конце концов остановились похоже не работает я не уверен до конца времени проверить не было но мне показалось что он не работает те защита игры не обходится если использовать этот подход но это легко проверить и нужно сделать тогда перехват SetCursorPos сведется к /topic/904988&pg=6 повторяю мне показалось что это не работает я поленился проверять но именно поэтому я вернулся к *.code.bytes.bin файлам ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2012, 19:36 |
|
|
start [/forum/topic.php?fid=60&msg=37602603&tid=2158128]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 387ms |
total: | 536ms |
0 / 0 |