Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

[Руоф] Код для инжекта в память.

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 30.06.2015, 07:19   #301
 Разведчик
Аватар для Maxxzzz
 
Maxxzzz никому не известный тип
Регистрация: 28.11.2009
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Почему возникают 2 ошибки при компиляции ?
[dcc32 Error] Unit1.pas(49): E2033 Types of actual and formal var parameters must be identical
на
WriteProcessMemory(hProcess, ThreadAddr, Func, 256, lpNumberOfBytes);
и
WriteProcessMemory(hProcess, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

Заранее спасибо.
  Ответить с цитированием
Старый 30.06.2015, 13:20   #302
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

На ХЕ работаешь? Там со строками надо мудрить. Ввели Unicodestring, что то ещё, поэтому и жалуется на тип переменных. У меня делфи 2010 , вот думаю есть смысл переходить на XE 7?
  Ответить с цитированием
Старый 30.06.2015, 18:01   #303
 Разведчик
Аватар для Maxxzzz
 
Maxxzzz никому не известный тип
Регистрация: 28.11.2009
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от diagnostПосмотреть сообщение
На ХЕ работаешь? Там со строками надо мудрить. Ввели Unicodestring, что то ещё, поэтому и жалуется на тип переменных. У меня делфи 2010 , вот думаю есть смысл переходить на XE 7?

Да хе3. Пасиб.
  Ответить с цитированием
Старый 01.07.2015, 02:07   #304
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Почему возникают 2 ошибки при компиляции ?
[dcc32 Error] Unit1.pas(49): E2033 Types of actual and formal var parameters must be identical
на
WriteProcessMemory(hProcess, ThreadAddr, Func, 256, lpNumberOfBytes);
и
WriteProcessMemory(hProcess, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

Заранее спасибо.


Maxxzzz, сделай так:

lpNumberOfBytes: SIZE_T;
lpNumberOfBytes2: DWord;

WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes2);
________________
MultiXBot
MultiX_POT

Последний раз редактировалось fds255; 01.07.2015 в 02:15.
  Ответить с цитированием
Старый 11.11.2015, 18:21   #305
 Разведчик
Аватар для StrelokOD
 
StrelokOD никому не известный тип
Регистрация: 11.11.2015
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

fds255 Спасибо !

Последний раз редактировалось StrelokOD; 11.11.2015 в 18:28. Причина: проблема решена
  Ответить с цитированием
Старый 22.01.2016, 01:25   #306
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

WinClose адресочки не подскажете?
Отвечу сам себе:
Код:
  DlgCancelPush     = $00CF10EC;
  DialogOpAddr      = $009B2FC0;

  PW_BASE_ADDRESS   = $00D6F0AC;
  PW_DYNAMIC_BASE_OFFSET = $001c;       // [base] + 1c = CECGameRun
  PW_UIMANAGER_OFFSET = $0010;          // [base] + 1c + 10
  PW_UIMANAGER_GAMEUI_OFFSET  = $0008;   // [base] + 1c + 10 + 08 = CECGameUIMan
  PW_UIMANAGER_CURRENT_DIALOG = $0074;   // [base] + 1c + 10 + 08 + 74

Последний раз редактировалось diagnost; 05.02.2016 в 19:14.
  Ответить с цитированием
Старый 03.04.2016, 10:03   #307
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Часто вопросы возникают, и пишут в личку, по поводу инжекта движения.
Сразу предупреждаю инжект движения кривой другого у меня нету.
Код:
  pushad
  mov eax, BaseAddr
  mov eax, dword ptr [eax]
  mov eax, dword ptr [eax+$1C]
  mov edi, dword ptr [eax+$28]      //20
  mov ecx, dword ptr [edi+$14F0]
  push 1
  call CallAddress1
  lea edx, dword ptr [esp+$1C]     //18
  mov esi, eax
  push edx
  push flying
  mov ecx, esi
  call CallAddress2
  mov ecx, dword ptr [edi+$14F0]
  mov eax, x
  mov dword ptr[esi+$20], eax
  mov eax, z
  mov dword ptr[esi+$24], eax
  mov eax, y
  mov dword ptr[esi+$28], eax
  push 0
  push esi
  push 1
  call CallAddress3
  popad
  Ответить с цитированием
Старый 03.04.2016, 22:49   #308
 Разведчик
Аватар для shura_luka
 
shura_luka на правильном путиshura_luka на правильном пути
Регистрация: 08.11.2009
Сообщений: 36
Популярность: 154
Сказал(а) спасибо: 7
Поблагодарили 31 раз(а) в 21 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

[QUOTE=diagnost;5850730]Часто вопросы возникают, и пишут в личку, по поводу инжекта движения.
Сразу предупреждаю инжект движения кривой другого у меня нету.


Я пользуюсь таким же только опкодом, могу сказать что он не кривой проверено на win2003 server, win7, win8.1, win10 везде идёт нормик.
А кривость проявляется когда юзается автологин или кривые патчеры, так что пользуйтесь ИЦ и будет счастье.
  Ответить с цитированием
Старый 04.04.2016, 14:17   #309
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Цитата:
Сообщение от shura_lukaПосмотреть сообщение
Я пользуюсь таким же только опкодом, могу сказать что он не кривой проверено на win2003 server, win7, win8.1, win10 везде идёт нормик.
А кривость проявляется когда юзается автологин или кривые патчеры, так что пользуйтесь ИЦ и будет счастье.

Это уже интересно! Надо по экспериментировать!
  Ответить с цитированием
Старый 10.04.2016, 03:04   #310
 Разведчик
Аватар для Smerch
 
Smerch скоро будет известенSmerch скоро будет известенSmerch скоро будет известенSmerch скоро будет известен
Регистрация: 14.07.2009
Сообщений: 11
Популярность: 306
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 6 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Код:
procedure MoveASM(pParam: PMove);Stdcall; 
var                                         
  P1,flying,CallAddr1,CallAddr2,CallAddr3: DWord;
  x,y,z: Single;
begin                                   
  x:= pParam^.x;
  y:= pParam^.y;
  z:= pParam^.z;
  CallAddr1:= $004A5F80;
  CallAddr2:= $004AC480;
  CallAddr3:= $004A6590;             
  asm
    pushad
    mov eax, dword ptr [$00DB6364]
    mov edi, dword ptr [eax+$28]     
    mov ecx, dword ptr [edi+$14F0]
    push 1
    call CallAddr1
    lea edx, dword ptr [esp+$1C]    
    mov esi, eax
    push edx
    push $0
    mov ecx, esi
    call CallAddr2
    mov ecx, dword ptr [edi+$14F0]
    mov eax, x
    mov dword ptr[esi+$20], eax
    mov eax, z
    mov dword ptr[esi+$24], eax
    mov eax, y
    mov dword ptr[esi+$28], eax
    push 0
    push esi
    push 1
    call CallAddr3
    popad                       
  end;
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  Coords: Tmove;
  x,y,z: Single;
begin
  x:= 204.330291748047;
  y:= 321.845764160156;
  z:= 52.5238723754883;
  Coords.x:= x*10-4000;
  Coords.y:= y*10-5500;
  Coords.z:= z*10;
  Bot.OpenProc(clientPID);
  Bot.GoMove(Coords);
  Bot.CloseProc();
end;
Помогите, пожалуйста, весь день бьюсь уже.
Инжект работает, но почему-то персонаж бежит строго на запад до упора при любых значениях х,y,z.


UPD: проблема решена, оказалось ошибка появилась в функции инжекта

Последний раз редактировалось Smerch; 10.04.2016 в 15:21. Причина: решено
  Ответить с цитированием
Старый 22.06.2016, 23:48   #311
 Пехотинец
Аватар для diagnost
 
diagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражанияdiagnost блестящий пример для подражания
Регистрация: 03.01.2010
Сообщений: 95
Популярность: 1542
Сказал(а) спасибо: 110
Поблагодарили 460 раз(а) в 288 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Изменений никаких циферки подставляем и все
Код:
CPU Disasm_E5AFA4
Address   Hex dump          Command                                  Comments
004B8ABC    8B8E 00150000   MOV ECX,DWORD PTR [ESI+1500]
004B8AC2    6A 01           PUSH 1
004B8AC4    E8 F7F90000     CALL elementclient_Dumped.004C84C0
004B8AC9    8D5424 20       LEA EDX,[ESP+20]
004B8ACD    8BD8            MOV EBX,EAX
004B8ACF    52              PUSH EDX
004B8AD0    6A 02           PUSH 2
004B8AD2    8BCB            MOV ECX,EBX
004B8AD4    E8 675F0100     CALL elementclient_Dumped.004CEA40
004B8AD9    8B8E 00150000   MOV ECX,DWORD PTR [ESI+1500]
004B8ADF    6A 00           PUSH 0
004B8AE1    53              PUSH EBX
004B8AE2    6A 01           PUSH 1
004B8AE4    E8 E7FF0000     CALL elementclient_Dumped.004C8AD0
Свой код переписал так, постарался повторить макс возможности
Код:
  pushad
  mov eax, BaseAddr
  mov eax, dword ptr [eax]
  mov eax, dword ptr [eax+$1C]
  mov esi, dword ptr [eax+$34] //Y     //20
  mov ecx, dword ptr [esi+$1500]//Y
  push 1
  call CallAddress1
  lea edx, dword ptr [esp+$20]     //18
  mov ebx, eax
  push edx
  push flying
  mov ecx, ebx
  call CallAddress2
  mov ecx, dword ptr [esi+$1500]  //Y
  mov eax, x
  mov dword ptr[ebx+$20], eax
  mov eax, z
  mov dword ptr[ebx+$24], eax
  mov eax, y
  mov dword ptr[ebx+$28], eax
  push 0
  push ebx
  push 1
  call CallAddress3
  popad

Последний раз редактировалось diagnost; 23.06.2016 в 00:05.
  Ответить с цитированием
Пользователь сказал cпасибо:
growl13 (20.10.2017)
Старый 02.10.2016, 19:39   #312
 Разведчик
Аватар для Smerch
 
Smerch скоро будет известенSmerch скоро будет известенSmerch скоро будет известенSmerch скоро будет известен
Регистрация: 14.07.2009
Сообщений: 11
Популярность: 306
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 6 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

инжект прыжка
Код:
procedure JumpCall(aPParams: PShablon); Stdcall;
var
  CallAddress: DWORD;
begin
  CallAddress := AutoPath;
  asm
    pushad
    push $00
    push $00
    push $00
    push $00
    push $00
    push $00
    push $00
    push $00000121
    mov ecx, GameAdress
    mov ecx, dword ptr ds:[ecx]
    call CallAddress
    popad
  end;
end;
P.S. Судя по всему, теперь для прыжка используется функция автопути.
  Ответить с цитированием
Старый 29.04.2017, 23:19   #313
 Разведчик
Аватар для dronte
 
dronte никому не известный тип
Регистрация: 06.07.2013
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: [Руоф] Код для инжекта в память.

на стадии разбора того, как сделать код для выделения моба.

Вот адреса, которые выпали при поиске "кто получает доступ к BaseAddr", после фильтрации всего до выделения, после выделения кратны вот эти

Код:
004BEE2F  //апается всегда
004BEF8B  //

004CA115  //апается только если удалось выделить (если достаточно близко) вызывает следующий (0086e4d0)
0086E4D3  //
008B35BD  //

004A97F1  //
004A9202  //
первые два дают какую-то очень неясную вещь, понять что она делает и как ей воспользоваться - не получилось, кроме того, что было ясно изначально, что там определяется перейдёт ли таргет на тыкнутого моба или нет, в частности, в зависимости от дальности этого моба по отношению к персонажу.
во втором блоке все эти обращения прямо перед вызовом, в частности используется адрес BA+20, который где-то здесь упоминался, как адрес, связанный с SendPacket

помогите со всем этим разобраться, как научиться выделять код, который нужен от кода, который не нужен? (asm понимаю, но лучше всего же вызывать код с вершины "айсберга вызовов", а её найти не могу) куда передать управление, чтобы сымитровать выделение моба?
  Ответить с цитированием
Старый 09.06.2017, 15:27   #314
 Разведчик
Аватар для KLAIDY
 
KLAIDY никому не известный тип
Регистрация: 11.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 5 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

Инжект редактирования текста в чате (по идее должен срабатывать и с другими текстбоксами, но я не проверял). Отправка сообщения выполняется другим инжектом - при помощи GUI.
Был взят от заморских друзей, полная статья:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Собственно, метод инжекта, написанный на c#:
Код:
public static void SetText(IntPtr oph, String value, Int32 address)
        {
                // ---- формируем наш опкод
                Byte[] setChatTextOpcode = new Byte[]
                {
                0x60,                                   // PUSHAD
                0xB9, 0x00, 0x00, 0x00, 0x00,           // MOV ECX, {stringPointer}
                0xBF, 0x00, 0x00, 0x00, 0x00,           // MOV EDI, {chatBoxObjPtr}
                0x8B, 0x07,                             // MOV EAX, DWORD PTR DS:[EDI]
                0x51,                                   // PUSH ECX
                0x8B, 0xCF,                             // MOV ECX,EDI
                0xFF, 0x50, 0x48,                       // CALL DWORD PTR DS:[EAX+48] это значение может сдвигаться на значение кратное 4 с обновами
                0x61,                                   // POPAD
                0xC3                                    // RETN
                };
                // ---- освобождаем память под опкод в памяти клиента
                IntPtr setChatTextOpcodeAddress = WinApi.VirtualAllocEx(oph, IntPtr.Zero, setChatTextOpcode.Length, WinApi.AllocationType.Commit, WinApi.MemoryProtection.ExecuteReadWrite);
                // ---- записываем опкод в освобожденную память
                Int32 number_of_bytes_written_3;
                WinApi.WriteProcessMemory(oph, (Int32)setChatTextOpcodeAddress, setChatTextOpcode, setChatTextOpcode.Length, out number_of_bytes_written_3);
                // ---- формируем массив данных
                Byte[] bytes_2 = Encoding.Unicode.GetBytes(value);
                // ---- выделяем место в памяти клиента
                IntPtr text_address = WinApi.VirtualAllocEx(oph, IntPtr.Zero, bytes_2.Length, WinApi.AllocationType.Commit, WinApi.MemoryProtection.ExecuteReadWrite);
                // ---- записываем массив данных в выделенное место
                Int32 number_of_bytes_written;
                WinApi.WriteProcessMemory(oph, (Int32)text_address, bytes_2, bytes_2.Length, out number_of_bytes_written);
                // ---- конвертируем указатель на массив данных в массив байтов
                Byte[] new_value = BitConverter.GetBytes((Int32)text_address);
                new_value.Reverse();
                // ---- записываем указатель на массив данных по адресу опкода + 2
                Int32 number_of_bytes_written_4;
                WinApi.WriteProcessMemory(oph, (Int32)setChatTextOpcodeAddress + 2, new_value, new_value.Length, out number_of_bytes_written_4);
                // ---- address - указатель на структуру контрола текстбокса чата, ищу в цикле по названию контрола
                // ---- конвертируем адрес структуры контрола в массив байтов
                Byte[] chatBoxObjPtrBytes = BitConverter.GetBytes(address);
                chatBoxObjPtrBytes.Reverse();
                // ---- записываем указатель на текстбокс по адресу опкода + 2
                Int32 number_of_bytes_written_5;
                WinApi.WriteProcessMemory(oph, (Int32)setChatTextOpcodeAddress + 7, chatBoxObjPtrBytes, chatBoxObjPtrBytes.Length, out number_of_bytes_written_5);
                // ---- запускаем записанную в память функцию
                IntPtr lpThreadId;
                IntPtr hProcThread = WinApi.CreateRemoteThread(oph, IntPtr.Zero, 0, (IntPtr)setChatTextOpcodeAddress, IntPtr.Zero, 0, out lpThreadId);
                // ---- Ожидаем завершения функции
                WinApi.WaitForSingleObject(hProcThread, WinApi.INFINITE);
                // ---- Подчищаем за собой
                WinApi.VirtualFreeEx(oph, hProcThread, 20, WinApi.FreeType.Release);
                WinApi.VirtualFreeEx(oph, setChatTextOpcodeAddress, 20, WinApi.FreeType.Release);
                WinApi.VirtualFreeEx(oph, text_address, 20, WinApi.FreeType.Release);         
        }
Если вдруг у кого-то есть другой способ отправки сообщения (кроме подмены указателей на текст), прошу скинуть в личку
  Ответить с цитированием
Старый 07.03.2018, 15:46   #315
 Разведчик
Аватар для Luciferkox
 
Luciferkox никому не известный тип
Регистрация: 25.02.2018
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Руоф] Код для инжекта в память.

А как это же сделать на AutoIt?
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Читерим в CrossFire или методы инжекта Hummel Cross Fire 6 10.11.2010 21:36
[Программа] Память о базе Chipito Базы серверов и брут 2 30.08.2010 18:23
Оперативная память для ПВ. NikelR Общение и обсуждение Perfect World 4 25.05.2010 23:30

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 10:55.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net