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

SER[G]ANT

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

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

  • Посещение

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

    42

Сообщения, опубликованные SER[G]ANT

  1. rev2314

    add ctrl+r (replace) to the lua engine

    and add an extra check to the symbollist destructor

    add lua access to the symbollist class and make the symbol handler be able to handle custom lists

    Also added some extra calendar stuff my mgr.inz.player

    forgot the bytesize

    Add disassembling lfence and mfence and fix sfence

    implement XSAVE and XRSTOR

    Start implementing the Java inspector

    merge the offset label and calender patches by mgr.inz.Player into the svn

    change static link to IsWow64Process to a dynamic load. Should fix OS'es that never even heard of 64-bit

    fix paste not giving components new names

    blatantly steal the anchor editor from lazarus

    WTF... Remove experimental code that isn't needed anymore

    Add {$LUA} and {$ASM} to the auto assembler and symbol highlighter to let aa scripts execute multiline lua blocks. (these functions can return a string to replace their blocks with the string they return)

    Also make notify specific ip's visible in the pointerscan rescan window

    Fix saving more than needed. (Edit the form and then close the designer for it to fix existing forms)

    Implement structure dissect automatic fill based on mono class layout

    fix closeCE

    Implement structure name lookup for the mono extension and fix the safeguard around the scan for the structure vtable

    Implement a bunch of lua functions that should make it easier to add engine specific support, including their bytecodes

    Implemented saving/loading the dissectcode object

    Change enummodules to make it's own list, and add the ability to specify a specific process without opening it

    Fix the bug where a mono process would wait till the injected thread was terminated

    implement some threading helper functions and fix some threading issues and fix a problem with getting the breakpointlist

    change createTimer to accept 0 parameters

    Removed and shiften some internal counters in the pointerscanner and added nonstatic vtable pointers as an option

    That second parameter isn't needed

    Implement Address to Symbolname lookup for jitted functions in mono

    And fix a callback bug

    give the token instead of full string

    also fix address lookup

    fix the symbol callback registration

    Add symbol lookup callbacks to lua

    test and fix the new aa commands

    Implement AA command GETMONOSTRUCT and fix FINDMONOMETHOD so it returns the jitted address

    add auto assembler command "FINDMONOMETHOD"

    add anchors

  2. rev2284

    forgot to commit the modified pointerscannerfrm.pas

    Implement the group menuitem checkbox update for Manual Expand Collapse

    fix the rescan window resizing

    Fix GetFileSizeEx not being properly declared.

    And add some extra checks for 0 byte .ptr files (skip them)

    fix rescan not overwriting the results

    Add custom headers for assembler instructions like comments

    And commit the method lookup code for the mono data collector

    Implement method name lookup

    fix something stupid

    implement findClass

    deal with pipereads of 0 bytes better, and implement code to get the namespace from a class

    change the pointerscan result reader to make use of file mapping instead of manually reading

    Add a searchpath for 32-bit or 64-bit lua extension dll's

    forgot the then

    undo a certain change

    Adding an extra brace to make sure the other states are not checked if level+3<maxlevel

    Add some more prioritizing of the queue. (More if statements)

    fix the stop button and add some code to prioritize top level queue entries

    Add a method to register new auto assembler commands

    Make the mono plugin add a menu item

    Commit some documentation (And yes, I know I still need to replace an I with an O)

    And change enumModules so it loads a modulelist as well (useful in onOpenProcess)

    Add some extra mono functions

    Don't queue the crappy paths either

    Don't queue the crappiest paths

    Improve speed some more by not caring too much if a lock is obtainable or not

    add a calculation to lower collisions

    improve pointerscan performance by moving the counter to seperate storage locations for each thread and pick which cpu cores get what thread

    Also, changed the queuesize to a const and LOWERED the quesize for an even greater speed increase

    fix speed calculation when starting a new scan

    fix compilation for 32-bit (treenode)

    add a couple of extra methods to the treeview and pipe. And add the mono dissector code/form (lua) to the cheat engine autorun folder.

    Add Level property to the treenode class

    Add an 8 byte storage to treenodes on lua's side

    Add events for OnExpanding and OnCollapsing for the treeview

    Add enumModules to lua so you can get a list of all modules. Even if you don't know the name of the module

    forgot to undo a small test

    Add the ability to add custom data to class object

    change the way treenodes are added slightly

    And make the method names a bit more forgiving

    Add code for controlling the TreeView and TreeNode's with lua

    Added the popup/context menu, and added options to change the order of menu items (object inspector rightclick in the treeview)

    Also made rightclicking in the object inspector treeview more userfriendly

    cleanup CEForms on exit

    Add mainmenu to the designed forms. (still slightly buggy when closing)

    Add a tabbed control (no lua specific code yet though)

    Add an item editor to the listview and added the treeview components (still needs an editor itself, and a treenode lua class wrapper)

  3. сохраняешь текущее значение

    ставишь таймер

    сравниваешь текущее значение с сохранённым

    если изменилось, то выводишь значение в консоли/если нет - опять таймер

    сохраняешь новое текущее значение

    и т.д.

  4. rev2245

    minor change to errorOnLookupFailure

    fix compile error

    add field and method enum

    Commit the mono data collector. Still WIP (similar to the DotNetDataCollector, but this one will be controlled from the lua engine)

    fix compilation for 32-bit

    change the behavior of the pipe function and add a destructor

    add pipe communication ability to lua. (useful for talking to injected dll's / helper processes )

    Optimized the cuda scan a bit more. Speed for a level 5 tutorial scan is still equal to a single threaded non-optimized scan. This project can most likely be abandoned for now

    fix the addresslist documentation

    fix a bug. It's now only slightly slower to a single threaded pointerscan on a normal cpu

    committing some cuda pointerscan stuff

    Committing some code i've been experimenting with

    bug the user only when he uses a different structname than the default no structname

    fix a small bug that caused some bugreports

    give it a break

    compile fix for 32-bit

    Make the disassembler show some more data in the comment field

    Adding some extra safety checks to the structure dissect

    Fix the structure settings from closing after giving invalid input

    (last commit meant physical of course)

    Add an option to make virtual memory scanning safer. (on by default)

    add code to do big endian file access (not used, but it's there)

    fix a bug in the symbol handler where it filtered out certain symbols

    Add a driver function to get the physical memory layout and make stopping ultimap a bit more stable

    update the documentation and make two functions more forgiving

    add a safety check to the pe-info dissector

    fix GetThreadList

    fix ultimap hotkeys

    fix non defined symbols from getting function parameters

    Change the way exceptions that reach the gui are handled

    Fix the 64-bit registers not aligning properly

    make the code injection template make use of the caller memory view window

    Fix find, and implement entry highlighting based on the address

    add a find to the stackview

    Apply only the changed fields when changing multiple records

    fix the deselection when rightclicking an multiselected entry

    fix problem where deleting an non-visible component wouldn't work

    make setAddress call ReinterpretAddress

    Added the much requested "Pointer must start with" feature. (it will not speed up the scan one bit, probably makes it slower, but it may help with diskspace)

    change the way the dotnetpipe is being used so it's more thread safe and export a lua function to specifically reload a module's symbols

    export fillFromDotNetAddress to lua

    assembler: fix the extra data

    structure dissect: Make the autogenerated child structures use .net lookup info as well when possible

    make structure dissector get the layout from .net

    fix the .net modulename/base setup and make the dll and symbol window show the .net symbols

  5. Не знаю как на C, а на асме я делал так


    ...
    invoke GetAsyncKeyState,VK_1
    .if eax!=0
    .if key1==FALSE
    invoke KeySound,offset mPS

    invoke mPatch,mOffset1_2,addr mValue1_2,mSize1_2
    invoke mPatch,mOffset1_3,addr mValue1_3,mSize1_3
    invoke mPatch,mOffset1,addr mValue1,mSize1
    mov key1,TRUE

    .elseif key1==TRUE
    invoke KeySound,offset UmPS

    invoke UmPatch,mUOffset1,addr mUValue1,mUSize1
    mov key1,FALSE
    .endif
    .endif
    .....

  6. А в чём разница? То, что в статье совсем другие картинки? В различных играх уровень здоровья отображается по разному, разве от этого что-то кардинально меняется?

    Статья даёт лишь базовые знания и не может ответить на все ваши вопросы и ситуации, которые вы встретите. Вы рассматриваете её как 100% шаблон, и если что-то отличается - всё, безвыходная ситуация! Но, судя по вашему последнему ответу, вы даже и не пытались попробовать.

    Если не учитывать, что на скриншотте сетевая игра (это же просто, как пример), то я не вижу ничего сложного в создании телепорта для человека, умеющего просто посидеть и подумать. (в игре, где это вообще возможно реализовать)

    Задайте себе вопросы:

    Координаты на глобальной карте и в игровом мире отличаются, если да, то как?

    Как или чем можно узнать координаты нужного вам места для телепорта?

    Если это не открытый мир, то как в игре происходит смена игровых уровней?

    Ваш эльф (или кто это там) управляет курсором на глобальной карте или наоборот?

    И т.д. и т.п.

    • Плюс 1
  7. rev2203

    fix releaseObjectHandle and also enumerate all other .net modules

    implement code to add the first .net module to the symbol lookup and implement it's usage

    implement the ReleaseObject method command to the dotnetpipe client class

    And adding the DotNetDataCollector binaries for those without visual studio

    also report if .net 4.5 is supported for structure layout lookup and add a simple hack that tells windows the app didn't crash

    start merging the .net data collector with the symbol handler and make some adjustments

    Commit the DotNetDataCollector

    fix nextscan

    fix next scan having the possibility of causing a buffer overflow in some situations

    Add an option to make the addresslist display values using the dropdown list format

    commit changes in mainunit.frm

    fix bug caused by lazarus autorename feature

    better detection if a module is 64-bit or not

    fix compiling for 32-bit users

    fix stupid bug

    add a donottrace.txt to the tracer

    don't edit when rightclick

    fix maxpd, maxss and maxps

    fix assembling fmul in 64-bit (it has no rex_w )

    make "show previous value column" persistent

    add data size recognition to the disassembler and make the tracer use those sizes when guessing the type

    adding some extra dll's

    Add a group option that shows a +/- sign in front of entries

    Save useless data to the cheat table that people are interested in for some unknown reason

    Implement dropdown list capability to memory records

    Make some components resize if they can't contain the text

    some beautifications

    fix script editing

    implement inputQuery for lua

    Add the ability to change values without using an inputquery

    only affect the base types

    fix changing the hex display while frozen

    fix merge (link)

    gui fixes and kick rescan workers if their results have already been merged

    make "resyncModulelist" also resync stacks

    fix getting the wrong filepath

    error out when the user gives an invalid multiplication value

    continue with implementing merge and distributed rescan (still untested)

  8. Данная статья расскажет вам о создании чит-опции под названием «„Blink“ Teleport», которая позволяет телепортировать игрока в указанную точку, используя для её выбора какой-то объект (прицел, курсор, или что-то иное, что может указать место для телепортации). Этот чит является разновидностью всеми известной опции «Teleport» и его создание практически ничем от него не отличается, за исключением нескольких моментов.

    Примеры скриптов телепорта на форуме есть, а вот статьи на русском языке нету. Поэтому, сначала нужно рассказать о нём.

    Часть 1: «Teleport»

    Данный чит предназначен для быстрого перемещения игрового объекта (игрока) по заранее сохранённым или известным координатам. К примеру, вы взяли у НПС квест, который выполняется в другой части карты. Долго-долго шли, выполнили его и теперь нужно снова долго-долго возвращаться обратно для его сдачи. Чтобы сократить время бесполезного перемещения, умными геймхакерами была придумана опция «Teleport». Мы сохраняем координаты нахождения игрока около НПС и когда нужно, мы изменяем текущие координаты игрока на сохранённые, тем самым мгновенно перемещается к НПС.

    Стоит заметить, что данная опция предназначена для перемещения персонажа в игровом пространстве в играх с открытым миром или в пределах одного игрового уровня.

    Я не стану описывать трехмерную систему координат или строение игровых уровней. Для создания этих опций, как ни странно, знать это совершенно не обязательно (Но не ленитесь, поищите в гугле, там много информации на эту тему и это знание будет полезным). Нужно просто уметь находить хотя бы одну из координат. Все дальнейшие действия (в 99% случаев) сводятся к тому, что вы будете просто изменять инструкцию, её адрес, смещения и регистры в готовом шаблоне скрипта.

    Первой игрой для примера будет Tomb Rider 2013.

    Для начала нам нужно найти одну из координат игрока. Какую именно искать – решать вам. Лично я советую искать координату по оси Z (т.е. высоту), т.к. в большинстве игр, если мы спускаемся вниз, то значение координаты по оси Z уменьшается, если поднимаемся, то увеличивается. В случае же с X и Y, мы первоначально не знаем расположение игрока, относительно направления этих осей, поэтому мы можем идти вперёд и искать увеличивающееся значение, а на самом деле мы идём назад и значение координаты уменьшается.

    Итак, мы запустили игру и нашли подходящее место, где мы можем спускаться и подниматься.

    1.png

    Ищем «Неизвестное значение» (Float), спускаемся и отсеиваем «Уменьшилось», поднимаемся и отсеиваем «Увеличилось» и так до тех пор, пока не найдем нужный нам адрес.

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

    Добавляем их всех в таблицу, какую-то часть замораживаем и пытаемся прыгнуть в игре, если нам удалось это сделать, то это не те адреса. Размораживаем и удаляем их. И так, пока не найдем нужный адрес.

    2.png

    Мы нашли адрес со значением координаты по оси Z. «02С7С7D8» (у вас он будет другим).

    Теперь ставим на него «Брейкпоинт на Доступ», всплывает много инструкций.

    3.png

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

    Я выбрал «011E5D24 – 8B 50 08 – mov edx,[eax+08]». Нажимаем на неё правой кнопкой мыши и во всплывшем меню выбираем «Проверить адресам, к которым получают доступ выбранные инструкции (макс. 8)»

    Появляется окно.

    4.png

    В нём отображается только 1 адрес, наш адрес. Отлично! (Желательно делать подобную проверку рядом с другими динамическими объектами – противниками, автомобилями и т.д. просто я первоначально знал, что данная инструкция верна)

    Теперь можно выделить этот адрес и нажать комбинацию клавиш «Ctrl+R» и там скопировать адрес напротив нужного регистра или вернуться в предыдущее окно, выделить нашу инструкцию и нажать на кнопку «Доп. Информация»

    5.png

    Копируем адрес после «Предполагаемое значение указателя:». У меня это 02C7C7D0, и он является началом структуры, в которой расположены координаты игрока.

    Переходим в «Анализ данных/структур» и исследуем найденную структуру, содержащую координаты игрока

    Практически всегда все 3 координаты по осям X,Y,Z находятся рядом друг с другом.

    Отыскиваем уже найденную Z

    6.png

    Добавляем в таблицу адреса находящиеся рядом с Z, замораживаем их по очереди и смотрим, можем ли мы перемещаться в какую-либо сторону, если нет, значит мы нашли ещё какую-то из координат.

    Отлично, адреса по смещению 0, 4, 8 и есть адреса с нашими координатами.

    7.png

    Переходим к написанию скрипта.

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(_loadAOB,TombRaider.exe,8b50088b400ce9xxxxxxxx8bxx8bxxxx8bxxxxxxxxb9xxxxxxxxe8xxxxxxxx85)
    alloc(MyCheat,2048)
    label(_loadRet)
    label(_loadOrg)
    label(coordX)
    label(coordY)
    label(coordZ)
    label(_save)
    label(_load)
    label(_saveCoords)
    label(_loadCoords)
    registersymbol(_saveCoords)
    registersymbol(_loadCoords)
    registersymbol(_loadAOB)
    MyCheat:
    _save:
    cmp [_saveCoords],1 //Если _saveCoords = 1, то будет выполняться код сохранения координат
    jne short _load //Если _saveCoords не равно 1, то будет выполнен переход на _load, где находится код загрузки координат
    push ecx //помещаем ecx в стек
    mov ecx,[eax] //помещаем в ecx значение регистра eax (т.е. текущее значение адреса с координатой X. Записываем его как [eax], т.к.
    //в структуре, которую мы исследовали, смещение этого адреса равнялась 0, т.е. [eax+0], что тоже самое).
    mov [coordX],ecx //помещаем значение регистра ecx, в coordX (Тут и будет сохраняться значение координаты X)
    //Далее всё тоже самое, только для Y и Z.
    mov ecx,[eax+4]
    mov [coordY],ecx
    mov ecx,[eax+8]
    mov [coordZ],ecx
    pop ecx //убираем ecx из стека.
    mov [_saveCoords],0 //изменяем значение флага на 0, чтобы сохранение координат больше не происходило.
    jmp _loadOrg //Переход на выполнение оригинального кода
    _load: //данный код будет выполняться, только если значение флага _saveCoords не равно 1
    //Т.е. будет выполняться
    // cmp [_saveCoords],1
    // jne short _load
    //а затем код ниже
    cmp [coordX],0 //защита от дурака. Делаем её по любой из координат. Т.к. адреса coordX, coordY и coordZ первоначально имеют значение 0.
    //Без этой проверки, если кто-то вначале не сохранит координаты, но произведет их загрузку, то он телепортнётся по координатам x=0, y=0,z=0
    je short _loadOrg //если coordX=0, то выполняем оригинальный код
    cmp [_loadCoords],1 //Если _loadCoords = 1, то будет выполняться код сохранения координат
    jne short _loadOrg //Если _loadCoords не равно 1, то будет выполнен переход на оригинальный код
    push ecx //снова помещаем ecx в стек
    mov ecx,[coordX] //Помещаем сохранённое в coordX значение координаты по оси X в регистр ecx
    mov [eax],ecx //и уже из регистра ecx помещаем значение в eax, т.е. заменяем текущие координаты игрока на сохраненные
    //далее всё тоже самое
    mov ecx,[coordY]
    mov [eax+4],ecx
    mov ecx,[coordZ]
    mov [eax+8],ecx
    pop ecx
    mov [_loadCoords],0 //изменяем значение флага на 0, чтобы загрузка координат больше не происходила.
    _loadOrg: //оригинальный код
    mov edx,[eax+08]
    mov eax,[eax+0C]
    jmp _loadRet
    //Тут будут располагаться наши метки и флаги
    coordX:
    dd 0
    coordY:
    dd 0
    coordZ:
    dd 0
    _saveCoords:
    dd 0
    _loadCoords:
    dd 0
    _loadAOB: //"TombRaider.exe"+2E5D24:
    jmp _save
    db 90
    _loadRet:
    [DISABLE]
    _loadAOB:
    mov edx,[eax+08]
    mov eax,[eax+0C]
    unregistersymbol(_saveCoords)
    unregistersymbol(_loadCoords)
    unregistersymbol(_loadAOB)
    dealloc(MyCheat)

     

     

    Мы написали скрипт, добавили его в таблицу. Теперь туда же нужно добавить флаги «_saveCoords» и «_loadCoords»

    8.png

    И когда нам нужно сохранить или загрузить координаты, мы просто меняем значение одного из этих адресов на 1 (можно вручную, а можно установить Хоткей).

    Вот, в принципе, и всё. Это самый простой скрипт телепорта, его можно сделать и более навороченным, но наша главная цель – «„Blink“ Teleport», для которого этого будет достаточно.

    Часть 2: «„Blink“ Teleport»

    А что, если нам нужно переместиться в место, где мы ещё не были?

    В опции «Teleport» мы сначала сохраняли координаты нашего объекта, а уже потом заменяли его текущие координаты на сохранённые. А вот в «„Blink“ Teleport» всё тоже самое, только мы заменяем текущие координаты нашего объекта на текущие координаты другого объекта.

    А какой объект, помимо игрока, мы ещё можем перемещать? Прицелом!

    Во многих играх (не во всех, а значит и эту опцию реализовать именно так не всегда получится) прицел задаёт траекторию движения пуль. Грубо говоря, прицел показывает вон туда, после выстрела там должна быть дырка.

    Координаты этого «вон туда» мы и должны попытаться найти.

    Опять вам нужно начать поиск «Неизвестного значения», изменять расположение прицела и отсеивать «Увеличилось»/«Уменьшилось». Можно встать у ровной стены и, перемещая прицел вверх/вниз, искать координату по оси Z, как в случае с игроком, но я стал искать координату по оси Y, т.к. можно поставить прицел как можно ближе к ногам игрока, текущие координаты которого нам известны, и начать с поиска «Диапазона», что значительно уменьшит число ложных адресов. Далее можно продолжать отсеивать «Увеличилось»/«Уменьшилось». В общем, любым удобным методом находим одну из координат прицела.

    9.png

    Далее, повторяя те же действия, что мы делали в первой части статьи, мы находим инструкцию, начало структуры и смещение адресов с координатами в ней.

    10.png

    11.png

    12.png

    И изменяем наш скрипт телепорта

    Скрытый текст
    
    [ENABLE]
    aobscanmodule(_loadAOB,TombRaider.exe,8b50088b400ce9xxxxxxxx8bxx8bxxxx8bxxxxxxxxb9xxxxxxxxe8xxxxxxxx85)
    aobscanmodule(_saveAOB,TombRaider.exe,8983f40a000089xxxxxxxxxx89xxxxxxxxxx8bxxxxxxxxxxxxxxxxxx33xxe8)
    alloc(MyCheat,2048)
    label(_loadRet)
    label(_loadOrg)
    label(coordX)
    label(coordY)
    label(coordZ)
    label(_save)
    label(_load)
    label(_loadCoords)
    registersymbol(_loadCoords)
    registersymbol(_loadAOB)
    label(_saveRet)
    registersymbol(_saveAOB)
    MyCheat:
    _save: //сохранение координат прицела
    push ecx
    mov ecx,[ebx+AF0]
    mov [coordX],ecx
    mov ecx,[ebx+AF4]
    mov [coordY],ecx
    mov ecx,[ebx+AF8]
    mov [coordZ],ecx
    pop ecx
    mov [ebx+00000AF4],eax
    jmp _saveRet
    _load: //загрузка координат прицела
    cmp [_loadCoords],1
    jne short _loadOrg
    cmp [coordX],0
    je short _loadOrg
    push ecx
    mov ecx,[coordX]
    mov [eax],ecx
    mov ecx,[coordY]
    mov [eax+4],ecx
    mov ecx,[coordZ]
    mov [eax+8],ecx
    pop ecx
    mov [_loadCoords],0
    _loadOrg:
    mov edx,[eax+08]
    mov eax,[eax+0C]
    jmp _loadRet
    coordX:
    dd 0
    coordY:
    dd 0
    coordZ:
    dd 0
    _saveCoords:
    dd 0
    _loadCoords:
    dd 0
    _loadAOB: //"TombRaider.exe"+2E5D24: //координаты игрока
    jmp _load
    db 90
    _loadRet:
    _saveAOB: //"TombRaider.exe"+5225E3: //координаты прицела
    jmp _save
    db 90
    _saveRet:
    [DISABLE]
    _loadAOB:
    mov edx,[eax+08]
    mov eax,[eax+0C]
    _saveAOB:
    mov [ebx+00000AF4],eax
    unregistersymbol(_loadAOB)
    unregistersymbol(_loadCoords)
    unregistersymbol(_saveAOB)
    dealloc(MyCheat)

     

     

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

    В «_save:» теперь происходит сохранение не координат игрока, а прицела. Флаг «_saveCoords» уже нам не нужен (Но его можно поставить, если вы хотите данный телепорт не сразу). В «_load:» всё осталось без изменений.

    Активируем скрипт, прицеливаемся в выбранную точку, меняем значение флага «_loadCoords» на 1 и вуаля.

    Но не всегда бывает всё так гладко с нахождением координат.

    К примеру возьмём игру «Санитары Подземелий» (1 и 2 части).

    Получать координаты для телепортации мы будем из курсора, точнее из зелёного кружочка, который указывает конечную точку перемещения Хартмана.

    13.png

    Если мы расположим его в том же месте, где стоит Хартман, то увидим, что координаты по оси X и Y равны, а вот по Z отличаются

    (координаты курсора)

    14.png

    (координаты игрока)

    15.png

    Высота расположения курсора ниже на 3, чем у Хартмана.

    Если в первой части игры это никак не отображалось на телепортации, то во второй Хартман проваливался под землю.

    Следовательно в скрипте пришлось делать небольшую поправку, а именно уменьшать значение координаты курсора по оси Z на 3

    Скрытый текст
    
    ….
    _save: //сохранение координат курсора
    push ecx
    mov ecx,[ebx+94]
    mov [coordX],ecx
    mov ecx,[ebx+98]
    mov [coordY],ecx
    mov ecx,[ebx+a9]
    mov [coordZ],ecx
    pop ecx
    mov eax,[ebx+94]
    jmp _saveRet
    _load: //загрузка координат курсора
    cmp [_loadCoords],1
    jne short _loadOrg
    push ecx
    mov ecx,[coordX]
    mov [esi+254],ecx
    mov ecx,[coordY]
    mov [esi+258],ecx
    mov ecx,[coordZ] //Помещаем координат курсора по оси Z в регистр ecx
    sub ecx,(float)3 //Вычитаем из него 3 (float)
    mov [esi+260],ecx //Остаток помещаем в адрес с текущими координатами игрока по оси Z
    pop ecx
    mov [_loadCoords],0
    _loadOrg:
    movss xmm1,[esi+254]
    jmp _loadRet
    …

     

    Это лишний раз говорит о том, что не всегда может быть точно так же, как и в статье.

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

    Удачи!

    © SER[G]ANT 2013

    • Плюс 9
  9. Я же говорил, что скоро напишу статью (или нет) на эту тему. Уже готово вступление и начало первой части статьи. (Там же и про простой телепорт рассказывать нужно).

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

  10. Была небольшая запарка в игре, решил скачать ваш трейнер. Оказалось, что хоть и заявлено, что работает на "All Version's", но со Steam версией не пашет.

    Благо, что позже прошёл затруднительное место самостоятельно.

  11. One Hit Kill у вас немного не верный.

    Если значение "[rbx+14]" = "1", то сразу идёт идёт прыжок на "returnhere" без выполнения инструкции "movss [rbx+08],xmm2". Получается, что враги мрут с 1 тычка, но и вы бессмертный.

    Поэтому скрипт должен выглядеть так:


    [ENABLE]
    alloc(newmem,2048,"Tutorial-x86_64.exe"+314ED)
    label(returnhere)
    label(originalcode)

    newmem:
    cmp [rbx+14],1
    je originalcode //Если значение [rbx+14] = "1", т.е. это игрок,
    //то выполняем оригинальный код.
    //Если же [rbx+14] ≠ "1", то это враги,
    mov [rbx+08],0 //значит мы меняем значение их здоровья на 0 и тут не нужно
    //писать ещё раз "movss [rbx+08],xmm2".
    jmp returnhere //после этого прыгаем в returnhere и всё.
    originalcode: //Оригинальный код
    movss [rbx+08],xmm2
    jmp returnhere

    "Tutorial-x86_64.exe"+314ED:
    jmp newmem
    returnhere:

    [DISABLE]
    "Tutorial-x86_64.exe"+314ED:
    movss [rbx+08],xmm2
    dealloc(newmem)

  12. rev2167

    clean up the scandata uploader when the scan finishes

    add extra safeguard

    disable the timer and clean up the list when new is clicked

    you can just clear this var

    small fixes

    cleanup handles

    fix listener

    fix error

    commit something that might cause a weird compile error

    fix the character range to accept

    start with implementation of scan operation broadcasts

    map the apic instead of blindly guessing

    fix inserting return each time ctrl+f is used

    implement out of diskspace checking and handling that status

    some more fixes. Distributed rescan works now

    some bugfixes and implement client->server status updates

    implement downloadpage and add some missing files to the svn

    first implementation for rescan (untested, 100% bugged out)

    replace map with pagemap as it's a lot more efficient than the normal Map object (greatly increases the rescan speed)

    add a pagemap class (just for testing purposes)

    implement the server side for rescans and a few bugfixes

    improve pointer rescan speed a bit, and combine all rpm calls into one location

    some fixes, adding more data to be visible to the user, started with designing the rescan

    forgot the structsize

    add some extra data to the disassembler

    fix hostname lookups

    implement scandata uploader/downloader

    fix compile for release

    implement client part of the protocol (rescan still needs to be added)

    implement the server part of the protocol

    Start implementing support for distributed pointerscanning

    Add option to export the pointermap and made it possible to do a pointerscan without attaching to a process

    improve pointerscan speed

    commit some last fixes before royally screwing up my own copy

    somewhere along the line I (or fpc) might have fixed the threading bug that blocked rescan from being multithreaded

  13. rev2129

    best keep a record of methods that aren't implemented in 6.3

    add makeVisible and commuit some stuff I might have forgotten to commit

    deal with math errors

    fix some bugs with queued events and the difference between the official debug state shown to the user and the internal state

    some debug fixes

    some fixes for arm

    forgot to save

    fix B producing a 12 byte branch instead of an 8 byte (uninitialized var)

    add support for rewriting conditional branches

    some arm and auto assembler stuff. (I should really do something about that nopping between variable size instructions )

    add missing file

    fix some bugs and add an alternative to B(L)

    start with adding support for arm instructions that break when relocated

    some arm assembler and disassembler fixes

    fix r32,mm,imm and r32,xmm,imm (PEXTRW)

    implement psubsb and psubsw

    might as well disassemble it

    add pmulld just because I can

    fix PMULHUW

    implement RCPSS and RCPPS

    implement RSQRTPS and RSQRTSS

    fix fyl2xp1

    fix crash when breaking in a 32-bit app (not arm)

    fix the index lookup not handling non alphabetical characters in the index (f2xm1)

    fix fnclex

    fix lpd/lps parameter order

    fix movhps<>movlhps

    optimize

    fix movlps<>movhlps

    fix rsqrtss

    fix shld

    fix fsubr, fdiv and fdivr

    fix faddp st(0), st(0)

    fix disassembling fldl2e and improve the description of some instructions

    fix dsr disassembly

    forgot to put some code back

    Implement clock_gettime

    implement CMD_SPEEDHACK_SETSPEED

    add isNetwork to the processhandler

    Fix injectdll for network

    Implement the speedhack for network

    start implementing the liux speedhack

    fix FindFreeBlockForRegion when in network mode

    implement network version of injectdll

    Implement CMD_LOADMODULE

    Implement EXTCMD_LOADMODULE

    implement a network version of CreateRemoteThread

    implement CMD_CREATETHREAD and fix possible error with module injection (readlink doesn't return a 0-terminated string)

    implement EXTCMD_CREATETHREAD

    Implement network variants of VirtualAllocEx and VirtualFreeEx

    Pass CMD_ALLOC and CMD_FREE through to EXTCMD_ALLOC and EXTCMD_FREE

    implement EXTCMD_ALLOC and EXTCMD_FREE

    implement the command to load the extension and start with alloc

    redefined the ext_ command defines

    and some cleanup

    improve the flow

    implement enabling the extension and calling alloc

    Add detection if the extension module has been loaded

    Implement communication between ceserver and ceserver_extension

    constructor test

    start with the extension module

    Share project "ceserver-extension" into "https://cheat-engine.googlecode.com/svn"

    filter by typing directly into the processlist

    implement moduleinject for arm as well

    switch from pread to an lseek64/read combination as I couldn't get pread to read addresses that could be interpreted as negative (e.g: b0000000)

    merge the experimental code with the svn just to make sure it's safe since it's working on 64-bit (need to add setting the proper parameters for arm)

    Found a faster injection method without the need to wait for the thread to wake

    documentation and experiment results

    Strip version numbers from linux modulenames

    start with research and design on making alloc/createthread and other useful options available

    deal with new isExe flag

    fix symbols on program files

    implement reactivating a breakpoint in arm after it got disabled for next step

    fix arm compilation

    fix the thread specific check

    set and remove breakpoint now deal with multiple/user specified breakpoint registers. (untested)

    Some arm disassembler fixes and adding code to deal with the debugger capabilities of the server

    Transfer hardware breakpoint capabilities to ce client

    Add support for x86 breakpoint address results

    some fixes and start with support for multiple bp's

    add armdisassembly to the foundcode dialog

    some debug and symbol fixes

    implement arm disassembling

    implement breakpoint handling for x86 network (tested)

    fix breakpoint removal and return values

  14. rev2047

    fix Description property

    implement network getThreadContext (untested)

    small change in the way the context is sent back

    fix entry selection when switching tabs right after a scan

    fix CheckForAndDispatchCommand

    implement dealing with compressed results of rpm

    implement compression of readprocessmemory

    implement network symbols in the client

    fix and change the header generation

    implement CMD_GETSYMBOLLISTFROMFILE

    start with symbol stuff

    I don't know why, buit I keep on making this same mistake

    implement client side of module32first/module32next, and fix closehandle to be not so slow...

    improve speed dramatically (stupid naggle)

    fix realloc bug

    check for module list instead

    it's 35C

    really stupid bug

    implement module32first/module32next

    and there's SWI

    fix multi and implement SWPParser

    implement LDM/STM

    implement SingleDataParser and fix post/pre indexed disassembling for the same instruction class

    implement mul parser

    implement MSR and MRS

    implement branch parser

    and a compiling fix

    fix record properties

    fix getpropertylist

    also commit the changes to the disassemblerarm.pas which the assembler relies on

    start with arm assembler

    fix setting unsupported method to nil

    fix the legacy opendialog_execute

    implement an ARM disassembler

    implement more network debug options. (trap works properly now)

    some more fixes here and there

    fix calculation with multiple negatives

    fix dline.GetHexBytes

    some fixes here and there

    update about form and some network bugfixes and decrease network usage

    add reference count to the handle and some bugfixes

    implement the basic stuff for the network debugger interface (not tested)

    add some initial debug events for thread creation

    add undocumented shl/shr reg

    close the thread handle when creating a remote thread. (Some people never close ce and constantly create threads)

    some syntax check fixes

    add message in case of wrong parameter

    implment "reassemble" aa command

    forgot a space

  15. какой направления ? де я не вижу, де что бы кто то бы сделал такой пример я не вижу, все говорят "а я думаю" мне надо точно знать где это может быть а не так на угад ковырять не зная чего

    Т.е. вы хотите примерно вот это:

    - Чтобы "плавать везде", нужно занопить инструкцию ххх по адресу ххх

    - Ура, теперь я умею делать опцию "плавать везде"!!1

    ZOCKIR дал вам ссылку, которая облегчает это дело раз в 500.

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

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

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