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

Релиз Cheat Engine 6.0


SER[G]ANT

Рекомендуемые сообщения

Собрал из доступных исходников (rev447), может быть кому будет интересно посмотреть.

Еще не все доступно, это только альфа

http://www.multiupload.com/2X0DEZRXF3

Ссылка на комментарий
Поделиться на другие сайты

Жаль мне не до исходников в данный момент.

Кстати я вижу следующую ситуацию после "двух руссификаций и модернизаций" CE - это излишняя повторяемость переноса модифицированного кода в каждую новую появляющуюся версию CE из прошлых модернизированных руссифицированных версий. Так что надо с этим что-то делать на подобии удобного контролируемого объединения исходных кодов и различных описаний: свойств форм и т.д.

Если есть фаны ДаркБайта, то не при них будет сказано. У него плохой стиль программирования, точнее "грязный", допуск варнингов, хинтов, названия переменных, куча потоков, сбор сообщений, лишнее потоки... А самый  "ужасный грех" в том, что программа CE плохо и коряво спроектирована на всём этапе разработки и этим автор показывает что не знаком с ООД. Чем дальше он будет писать обновления, тем сложнее будет что-то менять, переставлять, удалять и т.п. - сделано наспех и сделано и делается как "постоянный черновик". Каждая вышедшая версия, должна быть лишена этих недостатков. Тем не менее спасибо ему за программу, т.к. лучше так чем ни чего - ни исходников и не обновлений CE. 

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Напоминаю, что реализ CE 6.0 на официальном сайте подразумевается 31 декабря или позже (январе или даже в феврале). Так что ждём ;)

Те кто ждать не хотят могут сами скомпилировать проект из исходников SVN.

Так же хочется упомянуть, что основная проблема русификации и тем более модернизации CE состоит в ручном изменении исходников CE. Т.е. довольно нудно и трудоёмко вручную переносить старые модернизации в новые версии CE. Если бы это дело как-то автоматизировать (например Макросами IDE Delphi), то было гораздо проще. Другая проблема лично моя - пока модернизацией CE я заниматься не хочу, т.к. полно своих дел.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Вышла CE 6.0.

Описание:

January 10 2011:Cheat Engine 6.0 Released:

It has taken a while but the wait has been worth it: Cheat engine 6.0 has been released

It's not only a new version with some new features, but a complete port from Delphi to Freepascal/Lazarus with support for 64-bit

Of course, some features could not get implemented in this new version just yet, like the directx mess and trainer creator, but they are planned to come back in the next versions. If you need to use them, just use Cheat Engine 5.6.1 instead(Check the download page if you need it). And other features have just been stripped because they where useless (hyperscan)

Of course, new stuff has been added like the VEHDebugger, improved pointerscan speed, ability to compare to the values of a saved scan, advanced scripting, etc...etc...etc...

If you encounter bugs or have suggestions, please do not hesitate to report them. If you don't I can't fix/improve Cheat Engine

Cheat Engine 6.0

Fixes:

several disassembler fixes

change by offset supports negative hexadecimal offsets

several fixes to the data dissector

Fixed simple paste

Hextype won't change pos

Changes:

Added a 64-bit version

Different compiler (uses fpc/lazarus now instead of delphi)

Addresslist has been reimplemented from scratch

Debugger has been reimplemented from scratch

Hexview has been redesigned

Added a new debuggerinterface : VEHDebugger

replaced underc with lua

Added several lua routines

pointerscanner speed increased

custom types changes from scantype to valuetypes that can be used in multiple locations

disassembler shows colors and can be configured

improvements to the stackview

added tabbed scans

standalone Trainermaker is currently not implemented

added the option to save scanresults

You can now compare the current addresslist to the values of a saved scan (first scan included)

The above also makes the percentage scans more useful, so a between % scan has been added as well

Tables can now contain lua scripts that can get executed

Table entries can execute lua scripts when enabled/disabled (see it as an extension to auto assembler)

Added conditional breakpoint

added break on data breakpoint

automated "find what accesses address" now shows a trigger count

Hotkeys on cheat entries have been improved

Temp files don't get saved in the ce folder anymore

Cheat Tables don't get saved in the ce folder anymore

Added a suggestion where you can save your tables now

Cheat table entries can now be dragged and dropped, including on top of eachother

Hexview can now show seperators any way you like

You can compare two hexviews with eachother to show the differences

Added the 7 byte hexadecimal display type

Added some extra plugin apis

Improved the change register on breakpoint gui

And lots of other stuff...

Обсуждаем новые возможности в этой теме.

Ссылка на комментарий
Поделиться на другие сайты

1) DEALLOC - удаление выделенной памяти

2)GlobalAlloc (уже такая директива была).

Нужна для разового выделения памяти. Пример

[ENABLE]

GlobalAlloc(mem1,500)

mem1:

// будет выделена память

[DISABLE]

// описания изменение

В этом примере при включении/выключении чита, mem1 выделиться только первый раз. Если кто-то общается с Дарк Байтом, то можете предложить ему аналогичную директиву для CreateThread которая аналогично бы работала один раз. А также ввести аналогичную директиву распрастраняющуюся на группы читов. Например, это было бы полезно если нужно выполнить какой-то поток при первой активации любого чита из группы читов.

Про активирующие скрипты - http://forum.gamehac...db0490fa0249111

3) У CE обновлён Script engine на движке LUA

С этими функциями понятно:

readBytes(address,bytecount) : Reads the bytes at the given address and returns it

writeBytes(address, x,x,x,x) : Write the given bytes to the given address

readBytesLocal(address,bytecount) : See readBytes but then it's for Cheat engine's memory

writeBytesLocal(address, x,x,x,x) : See writeBytes but then it's for Cheat Engine's memory

readInteger(address) : Reads a integer from the specified address

readFloat(address) : Reads a single precision floating point value from the specified address

readDouble(address) : Reads a double precision floating point value from the specified address

readString(address, maxlength) : maxlength is just so you won't freeze for too long, set to 6000 if you don't care too much

writeInteger(address,value) : Writes an integer to the specified address. Returns true on success

writeFloat(address,value) : Writes a single precision floating point to the specified address. Returns true on success

writeDouble(address,value) : Writes a double precision floating point to the specified address. Returns true on success

writeString(address,string) : Write a string to the specified address. Returns true on success

showMessage(text) : shows a messagebox with the given text

messageDialog(text, type, buttons...) : pops up a message with a specific icon/sound with the specified buttons (mbok, mbyes, ....)

sleep(milliseconds): pauses for the number of specified milliseconds (1000= 1 sec...)

А вот с этими уже по интереснее (по определенным условиям: работа с хуками, процессами, выполнения автоассемблерных скриптов, подгрузка dll-ок, ввод/вывод пользователя от мышки и клавиатуры, спидхак и паузы процесса позволят останавливать процесс и запускать его медленно для считывания каких-то параметров, их обработки и т.п. ):

generateAPIHookScript(address, addresstojumpto, addresstogetnewcalladdress OPT) : Generates an auto assembler script which will hook the given address when executed

autoAssemble(text) : runs the auto assembler with the given text. Returns true on success

getProcessIDFromProcessName(name) : returns a processid

openProcess(processid) : causes cheat engine to open the given processid

openProcess(processname): causes cheat engine to find and open the given process

pause : pauses the current opened process

unpause: resumes the current opened process

getPixel(x,y) : returns the rgb value of the pixel at the specific screen coordinate

getMousePos: returns the x,y coordinates of the mouse

setMousePos(x,y): sets the mouse position

isKeyPressed(key) : returns true if the specified key is currently pressed

keyDown(key) : causes the key to go into down state

keyUp(key) :causes the key to go up

doKeyPress(key) : simmulates a key press

speedhack_setSpeed(speed)

injectDll(filename): Injects a dll, and returns true on success

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

Cheat table functions:

createTableEntry: creates an generic cheat table entry and add it to the list. Returns a tableentry pointer you can use with memrec routines

getTableEntry(descriptionname): returns a tableEntry pointer for use with memrec functions

memrec_setDescription(te, description): sets the specified description for this entry

memrec_getDescription(te): gets the current description of this entry

memrec_getAddress(te): returns the address and optional offsets for a pointer (note that in 64-bit kernelmode addresses will be rounded down...)

memrec_setAddress(te,address,offsets OPTIONAL) : Sets the address of a entry. You can give as many offsets as you need

memrec_getType(te) : returns the Variable type. (vtByte to vtCustom)

memrec_setType(te, vartype) : sets the type of the entry

memrec_getValue(te): returns the current value of the cheat table entry as a string

memrec_setValue(te, value): sets the value of a cheat table entry

memrec_getScript(te) : If the entry is of type vtAutoAssembler then you can get the script with this routine

memrec_setScript(te, script)

memrec_isFrozen(te)

memrec_freeze(te, updownfreeze OPTIONAL): sets the entry to frozen state. updownfreeze is optional. 0=freeze, 1=allow increase, 2=allow decrease

memrec_unfreeze(te) :unfreezes an entry

memrec_setColor(te, colorrgb): Sets the color of the entry

memrec_appendToEntry(te,te) : Adds the entry to another entry

memrec_delete(te) : It's unknown what this function does, all that is known is that after using this command other memrec routines with this table entry value don't work anymore...

Функции по отладчику:

Работа с регистрами:

EAX, EBX, ECX, EDX, EDI, ESP, EBP, ESP, EIP

RAX, EBX, RBX, RDX, RDI, RSP, RBP, RSP, RIP, R8, R9, R10, R11, R12, R13, R14, R15 : The value of the register

Обработчик бряков:

debugger_onBreakpoint()

createProcess(path, parameters OPTIONAL, debug OPTIONAL, breakonentrypoint OPTIONAL) : Creates a process. If debug is true it will be created using the windows debugger and if breakonentry is true it will cause a breakpoint to occur on entrypoint

debugProcess(interface OPT): starts the debugger for the currently opened process (won't ask the user) Optional interface: 0=default, 1=windows debug, 2=VEHDebug, 3=Kerneldebug

debug_setBreakpoint(address, size OPTIONAL, trigger OPTIONAL) : sets a breakpoint of a specific size at the given address. if trigger is bptExecute then size is ignored. If trigger is ignored then it will be of type bptExecute, which obviously also ignores the size then as well

debug_removeBreakpoint(address) : if the given address is a part of a breakpoint it will be removed

debug_continueFromBreakpoint(continueMethod) : if the debugger is currently waiting to continue you can continue with this. Valid parameters are :co_run (just continue), co_stepinto(when on top of a call, follow it), c_stepover (when on top of a call run till after the call)

hasChangedARegister : Set this to true before continuing and the changedREG variables will be checked to see if the new value should be set (just an optimization so not every variable has to be checked each time even if you didn't change a thing)

changedEAX, changedRAX, changedEBX, changedRBX, changed.....

gui для CE для вывода интересной информации из процесса игры

closeCE() : just closes ce

hideAllCEWindows() : makes all normal ce windows invisible (e.g trainer table)

unhideMainCEwindow() : shows the main cheat engine window

--class-objects-

The following objects are descendent from the object named "control", therefore the returned pointer when they are created can also be used for functions that start with control_

createForm(visible OPT): creates a form (window) and returns the pointer for it. Visible is default true but can be changed

form_centerScreen(form);

form_onClose(form, function)

form_hide(form)

form_show(form)

The following create routines take an owner as parameter. Owner can be a Form, Panel or Groupbox

The x,y position will be based on the client array of the owner

createPanel(owner)

createGroupBox(owner)

createButton(owner)

createImage(owner)

image_loadImageFromFile(filename)

image_stretch(boolean)

image_transparent(boolean)

createLabel(owner)

createEdit(owner)

createMemo(owner)

control_setCaption(control, caption) : sets the text on a control. All the gui objects fall in this category

control_getCaption(control)

control_setPosition(control, x,y): sets the x and y position of the object base don the top left position (relative to the client array of the owner object)

control_getPosition(contron): returns the x and y position of the object (relative to the client array of the owner object)

control_setSize(control, width,height) :

control_getSize(control)

control_align(control, alignmentoption):

control_onclick(control, function) :

createTimer(owner)

timer_setInterval(timer, interval)

timer_onInterval(timer, function)

getAutoAttachList(): returns the AutoAttach StringList object. It can be controlled with the stringlist_ routines (it's not recommended to destroy this list object)

stringlist_add(list, string);

stringlist_remove(list, string);

object_destroy(object) : Destroys the object (basically everything inherits from this

Эту информацию я вам привел пробежавшись по файлу справки. Каждую строчку я её не читал, так что можете найти там ещё что-то новое.

Пока могу сделать такой вывод. До версии и во время 5,6 был упор на автоассемблер и автопоиск цепочек указателей. В новой версии 6.0 был сделан упор на скриптовом управлении (многие функции я описал выше) процессов, а также поддержку отладки 64 разрядных приложений. Написание скриптов на LUA к сожалению не для всех пользователей, а скорее для тех кто знает С/С++/LUA... Так что те кто знают те обрадуются, а те кто не знают наверно расстроятся, т.к. почти ничего не понимают.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Да и кстати забыл обратить внимание. Теперь CE не поддерживает создания трейнеров как самостоятельных программ как это было ранее. Но это дело двух сторон. С одной стороны - не имеет поддрежки трейнеров, с другой стороны на LUA скриптах вы можете создать "форму трейнера" и необходимые контролы ;)

Т.е. теперь вы скриптами пишите и форму трейнера и сами читы. Затем эти скрипты аккуратно сохраняете по папкам и запускаете когда надо. Вообще хорошая идея. Однако было бы лучше если бы в CE была база данных как локальная (хотябы локальная) так и удалённая. Чтобы к этой БД можно было делать запросы и получить необходимые скрипты и описания к ним.

Ссылка на комментарий
Поделиться на другие сайты

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

Можно будет что-то типа своего движка для трейнеров сделать...

Ссылка на комментарий
Поделиться на другие сайты

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

Можно будет что-то типа своего движка для трейнеров сделать...

Ага, я не подумал об этом :lol: . С помощью LUA можно дизассемблировать инструкции, анализировать их и составлять автоассемблерные скрипты. Их потом можно сразу использовать как чит или перед этим добавить его в таблицу читов, а после закрытия CE удалять, т.к. они создаются динамически. Также можно автоматизировать отладку по LUA если это требуется... а от пользователя потребуется только ввести начальный адрес некоторого параметра.

Программа создает папку "My Cheat Tables" в Моих документах.

ЗЫ Новая версия по лучше чем прошлае.

+1 :-D

Ссылка на комментарий
Поделиться на другие сайты

Немного попользовал. Заломал 64-битного Сапёра)) (пока только таймер и количество бомб на поле), протестировал новый режим дебаггера в игре Дальнобойщики 3 - в новом режиме игра не вылетает при бряках! Потом ещё надо будет потестить на каком-нибудь LIVE. Из приятных мелочей - хоткеи стали в таблице сохраняться)) Ну и lua давно руки чесались изучить, теперь есть повод

Ссылка на комментарий
Поделиться на другие сайты

Информация.

1) CE периодически фиксится без уведомления в новостях на главном сайте, так что имейте ввиду. Возможно ваш баг уже исправлен.

2) В этом обзоре (наверно уже вы его видели, привожу ещё раз на всякий случай) показаны основные фишки CE 6.0 (я например узнал как пользоваться сканированием по процентам). Также вы увидите описание трейсера, установки условных бряков и увидите что-то ещё.

3) Кое-кто (mgr.inz.Player) уже успел сделать таблицу на CE 6.0 для Сталкера. Там же есть LUA + помните что в Сталкере объектные патроны, кому интересно могут посмотреть как были сделаны бесконечные патроны. Хотя я думаю, там просто автоматизирована перезарядка, с каждой перезарядкой можно создавать новые патроны. Т.е. без перезарядки беск. патроны не сделаешь простым способом. А там именно этот простой способ. Я же делал без перезарядки (только скрипт остался на харде в Москве, а сейчас не в Москве, так что посмотреть не могу)

Скрины и скрипт xrEngine.rar:

post-3-1294847804,15_thumb.pngpost-3-1294847808,09_thumb.pngpost-3-1294847811,26_thumb.png

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Народ, для того чтобы написать статью о компиляции CE6.0 нужна инфа по компиляции Lazarus после получения его исходников из SVN. Кто знает напишите )

А всё сам сделаю как будет время. Я уже нашёл информацию как компилировать Лезаруса.

Изменено пользователем MasterGH
...
Ссылка на комментарий
Поделиться на другие сайты

У меня идеи по структуризации тем и разделов по Cheat Engine модернизациям. Но сначала необходимо разобраться с тем как компилить Cheat Engine. Пока мне не удалось в этом разобраться если кто сможет, то пишите.

Для начала следующая информация.

Для компиляции текущего CE требуется Lazarus IDE версии не ниже v0.9.29, рекомендуется v0.9.31. Также требуется последний компилятор Free Pascal. Я предполагаю, что Dark Byte (DB) постоянно следит за последними обновлениями исходники этих инструментов. Компилирует их и затем компилирует ими Cheat Engine. Если он это делает не часто, то по крайне мере может сделать в любой момент и тогда новые исходники CE 6.xx мы уже не скомпилим и будем искать решение вместо того чтобы найти его сейчас. Это означает, что нам.

1. Этап

1) Скачиваем и пользуемся TortoiseSVN создав папку SVN в ней будет другие SVN-папки:

2) Закачиваем с помощью TortoiseSVN SVN-cheatEngine по ссылке http://ce.colddot.nl/svn

3) Закачиваем SVN-freePascalCompiler по ссылке http://svn.freepascal.org/svn/fpc/

4) Закачиваем SVN-IDELazarus по ссылке http://svn.freepascal.org/svn/lazarus

Таким образом всегда можно получать новые исходники. Я не знаю, возможно вы не захотите скачивать некоторые папки, но это уже Ваше решение.

2. Этап.

Потребуется компилировать все инструменты.

Пока у меня получилось скомпилировать freepascal. Позже я напишу как это сделал. Но у меня не получилось собрать Lazarus. После его компиляции, настроек необходимых путей можно будет компилировать Cheat Engine 6.0... Также есть здесь обсуждение.

А вообще мне не очень нравится этот гемморой на самом деле, но что делать - придётся.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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