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

Лидеры

  1. HackingMemory

    HackingMemory

    Ветераны


    • Баллы

      4

    • Постов

      15


  2. keng

    keng

    Ветераны


    • Баллы

      3

    • Постов

      1 635


  3. Aleksander D

    Aleksander D

    Ветераны


    • Баллы

      2

    • Постов

      74


  4. Submarina

    Submarina

    Мошенники


    • Баллы

      -2

    • Постов

      822


Популярный контент

Показан контент с высокой репутацией 27.08.2014 во всех областях

  1. Здравствуйте! Я записал видео уроки, по программированию и созданию трейнера на Lua (Cheat Engine), после чего решил поделиться с вами и выложить их на данный форум. Впрочем вот и сами видео уроки: Видео урок 1: В данном видео уроке мы разбираем работу со статическими адресами. Видео урок 2: В данном видео уроке мы научимся работать с AAScript (Cheat Enigne). Видео урок 3: В данном видео уроке, разбираем такую тему как GUI, научимся добавлять контролы, так же научимся работать с ними. Понимаем что такое Main Lua, и учимся с ним работать. Видео урок 4: В данном видео уроке мы учимся ставить BreakPoint и получать значение регистров. После чего учимся создавать хоткеи, создавать таймер, замораживать значения. Видео урок 5: Используем наши знания и пишем трейнер для игры Left 4 Dead 2. В конечном результате работаем с функцией которая взаимодействует с жизнями, обрабатываем ее, и делаем нас бессмертными. (AAScript). Исходники трейнеров выкладываются под видео в описании. Спасибо.
    4 балла
  2. Metro 2033 - Redux v1.0.0.7 Plus 15 Trainer NumPad 1 ~ Бессмертие NumPad 2 ~ Без Перезарядки NumPad 3 ~ Бесконечные Патроны NumPad 4 ~ Неразрушимый Противогаз NumPad 5 ~ Бесконечная Продолжительность Фильтров NumPad 6 ~ Скорострельный Огонь NumPad 7 ~ Максимальная Точность NumPad 8 ~ Без Перегрева NumPad 9 ~ Бесконечное Электричество NumPad 0 ~ Убийства с Одного Выстрела NumPad / ~ Ускорить Время NumPad * ~ Замедлить Время Numpad - ~ Супер Скорость Numpad . ~ Супер Прыжок F9 ~ Активировать Телепорт F10 ~ Сохранить Позицию F11 ~ Телепортироваться F12 ~ Отменить Телепортацию СкачатьMetro 2033 - Redux v1.0.0.7 Plus 15 Trainer.rar
    2 балла
  3. /*----------------------------------------------------------------------------*/ Верно, обращение по амперсанду выдаёт адрес переменной в памяти, обращение по имени - значение переменной. Точно так же, если к тебе пришёл адрес переменной, а ты хочешь получить значение из этого адреса - делаешь звёздочку: int foo = 0; // Объявляем переменную типа int с именем foo int* pFoo = &foo; // Объявляем указатель на int с именем pFoo, кладём в него // указатель на foo int bar = *pFoo; // Объявляем переменную типа int с именем bar и кладём в него //значение указателя pFoo В результате bar будет равно 0, то есть изначальному значению foo. То же самое, что и: int foo = 0; int bar = foo; Приведу ещё раз ассемблерную вставку из своего примера: __asm { push eax mov eax,[foo] inc eax mov [foo],eax pop eax } 0. Сохраняем регистр EAX в стек - мало ли, что там было до нашей функции. Вдруг важное?1. Кладём в EAX значение (не адрес!) переменной foo2. Увеличиваем eax на 13. Кладём в переменную foo новое значение То же самое, что и: foo++;или:foo += 1;или:foo = foo + 1; Дальше мы сообщаем в консоль значение foo и адрес foo в памяти. Если посмотреть этот код в отладчике, то увидим мы нечто такое: CPU DisasmAddress Hex dump Command 00023C0F |. 50 |PUSH EAX00023C10 |. A1 5C810200 |MOV EAX,DWORD PTR DS:[foo]00023C15 |. 40 |INC EAX00023C16 |. A3 5C810200 |MOV DWORD PTR DS:[foo],EAX00023C1B |. 58 |POP EAX Наша задача - как-то впихнуть в это место код, который скопирует EAX в какую-нибудь переменную, т.е. в какой-то другой адрес памяти. Вроде этого: CPU DisasmAddress Hex dump Command 00023C0F |. 50 |PUSH EAX00023C10 |. A1 5C810200 |MOV EAX,DWORD PTR DS:[foo]00023C15 |. 40 |INC EAX00023C16 |. A3 5C810200 |MOV DWORD PTR DS:[foo],EAX MOV [0x1234567],EAX00023C1B |. 58 |POP EAX Но просто так взять и записать кусок кода посреди программы мы не можем. Почему? Потому что компилятор - умный. И при компиляции весь код, переводя его в машинные инструкции (колоночка hex dump) кладёт их поближе друг к другу, но что самое важное - все переходы по коду (jmp, je, jne и так далее) осуществляются относительно текущего адреса. Следовательно, если порядок байт нарушить, впихнув лишних, то переходы, которые раньше ссылались на правильно заданные при компиляции места, начнут ссылаться в какую-нибудь далёкую страну, например SEG_FAULT. Приятный момент тут в том, что после компиляции в исполняемый файл код всегда будет лежать по одним и тем же адресам, т.е. адрес инструкции "MOV DWORD PTR DS:[foo],EAX" как был равен 0x00023C16, так там и останется. Нужно как-то впихнуть сюда ещё 5 байт (столько команда MOV и занимает вместе соперандами). Текущий код нельзя расширить, но можно поменять. Тут-то нам напомощь и спешит команда JMP. Стираем текущую команду MOV, вместо неё пихаем JMPна другой адрес, а там делаем так: MOV DWORD PTR DS:[foo],EAXMOV [0x1234567],EAXRET В итоге оригинальный код начинает выглядеть так: CPU DisasmAddress Hex dump Command 00023C0F |. 50 |PUSH EAX00023C10 |. A1 5C810200 |MOV EAX,DWORD PTR DS:[foo]00023C15 |. 40 |INC EAX00023C16 |. A3 5C810200 |JMP 0x123456700023C1B |. 58 |POP EAX Как такое сделать? Вот пример:
    2 балла
  4. /*----------------------------------------------------------------------------*/ Дык можно и в него писать, я не спорю. Только нельзя писать, куда попало. Надо или найти блок байт, который не используется (В отладчике Cheat Engine меню Tools - Scan for code caves), или же выделить через VirtualAllocEx, для неё нужно указать флажки, размер блока и pID процесса, который можно получить, например, через OpenProcess (пример моего кода): GetMemoryForCave proc bsize:dword LOCAL phndl:dword invoke OpenProcess,PROCESS_ALL_ACCESS,NULL,pid .if eax != 0 mov phndl,eax invoke VirtualAllocEx,phndl,NULL,bsize,MEM_COMMIT,PAGE_EXECUTE_READWRITE push eax invoke CloseHandle,phndl pop eax .endif ret GetMemoryForCave endp Как переворачивать адрес? Ну, это массив. Руками! WriteBuffer proc t:dword,f:dword,b:dword,s:dword push eax push ebx mov ebx, mov dword ptr [ebx],0E8h mov eax,t sub eax,f sub eax,5 mov byte ptr [ebx+1],al mov byte ptr [ebx+2],ah shr eax,16 mov byte ptr [ebx+3],al mov byte ptr [ebx+4],ah mov eax,s sub eax,5 cmp eax,0 je $+10 mov byte ptr [ebx+5],090h inc ebx dec eax jne $-11 pop ebx pop eax ret WriteBuffer endp /*----------------------------------------------------------------------------*/
    1 балл
  5. Привет Всем подскажите а почему когда делаешь поиск указателя находить много адресов перезагружаешь игру входишь снова делаешь отсеивание и так повторяешь до тех пор пока не останется несколько адресов потом поиграешь немного перезагрузишь игру загружаешь сохранение сто го место где сохранялся а эти указатели уже не работают это как так я знаю что правильней будет искать указатели в ручную тогда они не будут минятся но при поиске в ручную игра сразу вылетает че за фегня при то это не одна игра пробовал на многих и везде вылетает при поиске указателей в ручную ДА И ЧТО ТАКОЕ распределенный поиск указателей как работает это я пробовал искать но выдает какиета цифры с ошибкой
    -1 балл
  6. Keng покажи на примере пожалуйста или дай на водку на подробное описание на получения адреса DLL, у меня в игре только вроде exe у меня в некоторых играх бывало делаешь поиск указателей находит и указатели с exe и указатели с DLL но это бывает не часто по крайней мере у меня
    -1 балл
×
×
  • Создать...

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

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