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

Тестирование CE 6.1


MasterGH

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

Вы даже не представляете как далеко пошёл Дарк Байт. Он "прикручивает" настоящую IDE к Cheat Egine по существующим компонентам. А это предвестник того, что трейнеры начнут штамповать LUA скриптами. Которые будут сверхмалых размеров по сравнению с автономными трейнерами написанными даже на ассемблере.

post-3-1297514425,98_thumb.png

Но радоваться ещё рано, т.к. это дело на 100% не работает пока. Например, Control_SetCaption и Control_GetCaption пока не работают. Но обработчики события работают в связке с IDE, но не генерируются автоматически в LUA-консоле. Так же можно было видеть что добавлена подсветка. Как бы там не было, грядут большие перемены в создании трейнеров - сверх малых размеров.

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

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

Новости из закрытого раздела форума тестирования сырых верий CE. Для третьей альфа версии обновлены функции для LUA-поддержки. Одна из них касается сканирования сигнатур.

--aobScan("aobstring", protectionflags OPTIONAL, alignmenttype OPTIONAL, alignmentparam HALFOPTIONAL): 
--protectionflags is a string.
-- X=Executable W=Writable memory C=Copy On Write. Add a + to indicate that flag MUST be set and a - to indicate that that flag MUST NOT be set. (* sets it to don't care)
-- Examples:
-- +W-C = Writable memory exluding copy on write and doesn't care about the Executable flag
-- +X-C-W = Find readonly executable memory
-- +W = Finds all writable memory and don't care about copy on write or execute
-- "" = Find everything (is the same as "*X*C*W" )
--
--
--alignmenttype is an integer:
-- 0=No alignment check
-- 1=Address must be dividable by alignmentparam
-- 2=Address must end with alignmentparam
--alignmentparam is a string which either holds the value the addresses must be dividable by or what the last digits of the address must be

Информация по другим функциям

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

По поводу времени выхода CE 6.1 ещё неизвестно. Хотя по логам и исходниками видно, что было проделано не мало работы с момента выхода CE6.0.

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

Обновления до Cheat Engine 6.1 Alpha 4 с историями версий:

Поехали:

1) Cheat Engine 6.1 Alpha 1 (Thu Feb 10, 2011 10:16 pm)

Fixed several bugs (the first item in the addresslist should update a bit better now and errormessages should contain the error now as well)

memscanner now makes the temp folder writable for the current user

Selecting 4 bytes and pressing space in the hexview jumps to the specified address. Backspace returns (8 bytes if the target is 64-bit)

Added sorting by clicking on the columns in the addresslist

Made a start with the essentials of the trainer maker. It's still all done manually but just read the main.lua file on some updates

Changed the title to ce 6.1 Alpha

The mainmenu processlist is now invisible by default (you can still make it visible if you have to)

Compiled using the Lazarus/Freepascal build of today

Started with language support

You can now pick if it disassembles to 32 or 64 bit

Saved scan compares no longer take up totalgamememory * number of cpu's but only a few KB's now (might be slightly slower)

Seperate lua window. With support for lua syntax highlighting (doesn't get saved yet and doesn't yet replace the old one)

2) Cheat Engine 6.1 Alpha 2 (Thu Feb 24, 2011 6:38 pm)

several assembler/disassembler fixes

pressing delete in an empty cheat table list won't raise an AV anymore

implemented a load of new OO commands to lua

implemented the automated trainer maker

implemented the standalone trainer maker (still needs several bugfixes, e.g: parameter override, the window doesn't show up in the taskbar, closing doesn't work well,etc...)

full translation support now (check the languages folder)

Added an xm player

Memory scan options changed

lua aobscan now has several extra parameters

memory scan engine is fully accessible from lua

3) Cheat Engine 6.1 Alpha 3 (Thu Feb 24, 2011 11:40 pm)

Fixed some really annoying bugs

Тестирование aubscan1

Here are the results of the testing of AOBScan (LUA):

For testing, the application was Tutorial-i386.exe. aobstring = "8b 55 f8 89 10 31 c0".

It is at offset 00410319

In Memory Regions, the area is defined as (Execute+Write Copy/Commit/Execute+Read/Image)

- AOBScan(aobstring) => FAILED "Access violation"

- AOBScan(aobstring,"") => FAILED "Access violation"

- AOBScan(aobstring,"*X*W*C") => PASSED (address is found)

- AOBScan(aobstring,"-X") => FAILED (address is found)

- AOBScan(aobstring,"-W") => PASSED (address is not found)

- AOBScan(aobstring,"-C") => PASSED (address is not found)

- AOBScan(aobstring,"+W") => PASSED (address is found)

- AOBScan(aobstring,"+C") => PASSED (address is found)

- AOBScan(aobstring,"-W-C") => PASSED (address is not found)

- AOBScan(aobstring,"-W+C") => PASSED (address is not found)

- AOBScan(aobstring,"+W-C") => PASSED (address is not found)

- AOBScan(aobstring,"+W+C") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",0) => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",1) => ????? (address is found) (Is this the expected behavior?)

- AOBScan(aobstring,"*X*W*C",2) => ????? (address is not found) (Is this the expected behavior?) If the parameter is omitted it gives as value "1"

- AOBScan(aobstring,"*X*W*C",0,"") => PASSED An Error occurs '"{:content:}quot; is an invalid integer'

- AOBScan(aobstring,"*X*W*C",0,"4") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",0,"h") => PASSED (An Error occurs '"{:content:}quot; is an invalid integer')

- AOBScan(aobstring,"*X*W*C",0,"A") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",1,"") => PASSED (An Error occurs '"{:content:}quot; is an invalid integer')

- AOBScan(aobstring,"*X*W*C",1,"4") => FAILED (address is found)

- AOBScan(aobstring,"*X*W*C",2,"") => PASSED (An Error occurs '"{:content:}quot; is an invalid integer')

- AOBScan(aobstring,"*X*W*C",2,"4") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C",2,"9") => FAILED (address is not found)

- AOBScan(aobstring,"*X*W*C",2,"19")=> FAILED (address is not found)

Тестирование 2


- - - NOT Found
- - * NOT Found
- - + Scan Error: No Readable Memory Found
- * - NOT Found
- + - NOT Found
* * - Found
+ * - Found
* + - NOT Found
* - - Found
* * * Found

Fast Scan + Aligment = the result for any value is the same as for 4;
Fast Scan + Last Digits = the result for any one digit value is the same as for 4;
X   W   C 

4) Cheat Engine 6.1 Alpha 4 (Wed Mar 02, 2011 12:01 am)

Fixed the scanning errors

Redesigned the trainer maker to be more idiot proof

functions are now auto generated when using the form designer

added dbk functions to lua

updated the lua dll's so they now support 64-bit integer values (updated the change register method as well)

almost all strings in ce are now resources so ce should now be fully translatable

fixed auto assembler problem with dealing with strings (caused the veh debug error)

And some other fixes to several lua routines

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

В 4-ой версии альфа появилась одна особенность. Переменные в LUA скрипте можно использовать в скриптах автоассемблера используя префикс $.

Цитата Dark Byte:

oh yes, forgot to mention one more feature in this alpha:

the auto assembler can now use lua symbols (global symbols)

Just add a $ in front of the name and that lua symbol will get replaced internally by the string representation of that value

e.g in the lua script you have "bla=123"

you can then do "mov [eax],$bla"

same for addresses, but remember that ce uses hexadecimal strings

so:

lua: address="00400500"

aa: mov eax,[$address]

also, because lua is case sensitive, the variable name must match case (so not $AdDrEsS )

and for floating point values you will still need to add (float) or (double) in front

e.g (float)$bla

Когда выйдет реализ 6.1 я опишу эту особенность в справке по LUA Engine.

Также новые тесты aobscan:

Цитата Recifense:

Hi DB,

I restarted my PC and I could not reproduce the issue anymore.

So here is the result:

For testing, the application was Tutorial-i386.exe. aobstring = "8b 55 f8 89 10 31 c0 66".

It is at offset 00410319

In Memory Regions, the area is defined as (Execute+Write Copy/Commit/Execute+Read/Image)

- AOBScan(aobstring) => PASSED (address is found)

- AOBScan(aobstring,"") => PASSED (address is found)

- AOBScan(aobstring,"-X") => PASSED (address is not found)

- AOBScan(aobstring,"+X") => PASSED (address is found)

- AOBScan(aobstring,"-W") => PASSED (address is found)

- AOBScan(aobstring,"+W") => PASSED (address is not found)

- AOBScan(aobstring,"-C") => PASSED (address is found)

- AOBScan(aobstring,"+C") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C") => PASSED (address is found)

- AOBScan(aobstring,"-X*W*C") => PASSED (address is not found)

- AOBScan(aobstring,"+X*W*C") => PASSED (address is found)

- AOBScan(aobstring,"*X-W*C") => PASSED (address is found)

- AOBScan(aobstring,"*X+W*C") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W-C") => PASSED (address is found)

- AOBScan(aobstring,"*X*W+C") => PASSED (address is not found)

- AOBScan(aobstring,"*X-W-C") => PASSED (address is found)

- AOBScan(aobstring,"*X-W+C") => PASSED (address is not found)

- AOBScan(aobstring,"*X+W-C") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C",0) => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",1) => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",2) => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C",0,"") => PASSED An Error occurs '"{:content:}quot; is an invalid integer'

- AOBScan(aobstring,"*X*W*C",0,"4") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",0,"h") => PASSED (An Error occurs '"{:content:}quot; is an invalid integer')

- AOBScan(aobstring,"*X*W*C",0,"A") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",1,"4") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C",1,"1") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",2,"4") => PASSED (address is not found)

- AOBScan(aobstring,"*X*W*C",2,"9") => PASSED (address is found)

- AOBScan(aobstring,"*X*W*C",2,"19")=> PASSED (address is found)


X W C
- - - NOT Found
- - * NOT Found
- - + Scan Error: No Readable Memory Found
- * - NOT Found
- + - NOT Found
* * - Found
+ * - Found
* + - NOT Found
* - - Found
* * * Found

Fast Scan + Aligment = PASSED
Fast Scan + Last Digits = PASSED

I liked the change on the "The following opcodes accessed xxxxx".

The double-click on a register on the REGISTER of "Changed Addresses" is working pretty fine. Could it be implemented for the registers of "More Information"?

Is there a way to save information via AA so if the process closes by any error you can still be able to see it (debugging info generated by the script)?

Maybe some memory could be allocated and attached to CE instead of the app process.

Cheers and Congrats!

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

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

18 марта вышла 6 Альфа версия CE 6.1 (скачать)

(5 Альфа вышла 8-го марта, в ней в основном фиксы с дизассемблером, не очень интересно)

Dark Byte:

Several assembler/disassembler fixes

added a structure spider (dissect structure and pointerscan combined)

added a stringmap, to be used with the structure spider

fixed a bunch of lua functions , typos, and added some that where missing

fixed saving/loading TCheat objects

and fixed a bunch of other minor bugs

known bugs: Disassembler still seems to have a few bugs

structure spider is useful in cases where you have a piece of code that is used to access multiple addresses. You can then use the spider to easily find differences, including differences in the pointers is points to

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

Генератор тренеров не доделан? Просит standalonephase2.dat при сборке тренера, а такого файла нет...

Upd: разобрался. Тренеры получаются от 3 МБ (максимальное сжатие) до 8 МБ (без сжатия) :( но по крайней мере работают. При запуске в процессах появляются целых 3 копии тренера - сам тренер, невидимое окно CE и ещё одна копия, возможно лаунчер. Редактировать ранее сделанные exe-тренеры похоже нельзя( Зато можно сделать CE-тренер (xml-тренер), для открытия которого нужен CE. CE при открытии такого тренера будет не виден и тренер можно будет редактировать впоследствии или поставить защиту от редактирования. Такой тренер весит несколько кб в зависимости от количества и размера скриптов, которые в нём хранятся.

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

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

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

28 марта вышла 7 Альфа версия CE 6.1 (скачать)

Dark Byte:

fixed some disassembler bugs

exe trainer can now add extra files to the package (e.g when using extra lua libraries. Also, main.lua is not part of the default package, so if you make changes there and your trainer makes use of it, add it manually)

structure spider gui/speed improvements

Implemented shared memory (useful for debugging)

Added the disassembler to lua

Disassembler can now contain userdefined comments and they get saved in the cheat table

Fixed some lua functions

build with lazarus r29986 (64-bit) and r30042 (32-bit) (the ghosting in treeviews should be gone)

Please reports bugs you find, even if you did report them before (perhaps I fixed them but got broken again)

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

А косяк один имеется. Если открыть IDE генератора тренеров, то форму создаваемого тренера становится невозможно закрыть. Если же IDE не открывать и собирать тренер без этой панельки элементов, то форма закрывается нормально. Ну и обидно, что списки ListBox в тренер не вставляются :(

Новые баги:

1) Сохранённые в таблице комментарии в отладчике часто приводят к невозможности подключить отладчик, CE виснет

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

Сегодня обновилось SVN база для альфа 7, но установщик не обновлён до версии альфа 8. Исправлены ошибки в LUA скриптах следующие:

Теперь работает такой скрипт ("memoryrecord_setScript" требовалась позарез):


te_script1 = getTableEntry("script1")
te_script2 = getTableEntry("script2")
script2 = memoryrecord_getScript(te_script2)

memoryrecord_setScript(te_script1, script2) // была бага

2) Пользователь писал ошибку (в цитате ниже). Теперь она исправлена.

I'm having a bit of trouble with defining variables in the lua part of the cheat table and using it in the auto-assembler.

LUA

-- Addresses
address_one = "00400000"

-- Pointers
pointer_one = "00500000"

address_one works when used independently, like in the following script:

[enable]
$address_one:
db 74

[disable]
$address_one
db 75

but the instruction can't be compiled when used in a call, jump, or even in place of a pointer like mov edx, [$var_name_here]

[enable]
$address_one:
call $address_two //random variable name

[disable]
$address_one:
db e8 00 00 00 00

Ждём следующую альфу с установщиком или сами компилируем по сорцам SVN.

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

5 апреля вышла 8 Альфа версия CE 6.1 (скачать)

В неё включены исправления выше. А также следующие:

Added Canvas and Menu classed to lua

Pointerscanner rescan can now filter based on the base address, start offsets and end offsets

Structure spider can now do a rescan on a file loaded manually

Implemented the ablity to change the default auto define on pointers in the dissect data window

Fixed locking memory bugs

Implemented and fixed memoryrecord_setScript

Improved recognition of Lua variables in auto assembler

Fixed memory scanning causing a crash when the scanner is destroyed

Fixed allocating negative memory when the disassembler window is minimized

Fixed adding unicode strings from a scan

Some typo fixes

Hopefully the last alpha unless I come up with a really useful feature I like to add, otherwise see this as the first beta

Example of using a menu:


function mi2click(sender)
showMessage('WEEEE');
end

f=createForm()


m=createMainMenu(f)
mItems=menu_getItems(m)


mi=createMenuItem(m)
menuItem_setCaption(mi,'Menu X')
menuItem_add(mItems, mi)


mi2=createMenuItem(m)
menuItem_setCaption(mi2,'Click me!');
menuItem_onClick(mi2,miclick)
menuItem_setShortcut(mi2,"CTRL+X");

menuItem_add(mi, mi2);

form_setMenu(f,m)

pnl=createPanel(f)
pm=createPopupMenu(f)
pItems=menu_getItems(pm)

mi3=createMenuItem(pm)
menuItem_setCaption(mi3,"Rightclick menu");
menuItem_add(pItems, mi3)

control_setPopupMenu(pnl, pm)

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

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

28 апреля вышла 2 Бета версия CE 6.1 (ссылка)

Русский плагин от SER[G]ANT (ссылка)

Немного обидно, что Дарк Байт запихнул файл перевода в какую-то клоаку "temp". Просто это, скорее всего, временно.

Fixed a bunch of minor bugs

changed the stackview to a listview instead of raw list

Lua: Added easier access to the disassembler and hexview objects

Changes to the form designer get syncronized with lua now automatically

The value scan can now take calculations (when ce can't do a simple strtoint on it it passed it to lua, so I guess you could even call functions)

Remember: Report bugs you find, even if you think everyone already knows about them.

Also, for the people from Russia: here is a translation file provided by SER[G]ANT

If there are errors in here, bug SER[G]ANT as I don't speak one word Russian

Если какие-то ошибки в русском переводе, то SER[G]ANT-а можно найти на нашем форуме.

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

...Дарк Байт запихнул файл перевода в какую-то клоаку "temp". Просто это, скорее всего, временно.

DB просто еще сам не решил где будут "распространяться" другие файлы перевода. Либо с самой программой, либо отдельно на сайте.

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

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

20 мая. Версия RC1 (Release Candidate 1)

http://cheatengine.o...Engine61RC1.rar

installer

http://cheatengine.o...Engine61RC1.exe (registers the .cetrainer extension so you can doubleclick them)

The changed addresses window has been changed to show the changes immediately when they happen, but only if they are visible (when you scroll you may see some outdated information, but will get updated within 500 ms)

Fixed the windows debugger from not closing properly

Fixed comparing to a saved scan

Fixed structure spider

Added some new lua stuff (e.g: ability to override autoguess)

Добавлены некоторые функции в LUA поддержку. Вот некоторые из них которые я пока не понял.



registerCustomTypeAutoAssembler(typename, bytecount, script)
Registers a custom type based on an auto assembler script. The script must allocate an "ConvertRoutine" and "ConvertBackRoutine"

onAutoGuess(function) :
Registers an function to be called whenever autoguess is used to predict a variable type function override (address, ceguess): Return the variable type you want it to be. If no change, just return ceguess

Выход CE 6.1 уже близок (я надеюсь).

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

27 мая(сегодня) Cheat Engine 6.1 Release Candidate 2

http://cheatengine.o...Engine61RC2.rar

installer

http://cheatengine.o...Engine61RC2.exe

New version of dbvm (v6)

Compiled in support for dbvm

Added a bunch of new lua instructions (e.g getPreviousOpcode and some untested stuff that may not even work right now)

Fixed saving/restoring the lua window

Fixed problem with reloading a table with assembler comments

fixed saving/loading of forms. (This breaks your old tables with forms, check the previous post where mgr.inz.Player posted a convertor)

Added some extra defines

Remember to report bugs even if you have reported them before. I'll probably won't fix them if you don't tell me just to piss you off

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

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

Имеется такой баг. Оригинальный код:

51                   - push ecx
52 - push edx
E8 0D5FFFFF - call EFLC.exe+809B20
83 C4 08 - add esp,08
C3 - ret
CC - int 3

После вставки:


E9 EFC3F613 - jmp 15040000
90 - nop
FF 83 C408C3CC - inc [ebx-333CF73C] : [00000000]

т.е. последний байт call переносится на новую строку и add превращается в inc с двумя лишними байтами:( Фиксится ручным добавлением одного nop

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

aliast, можно тоже самое только с адресами. А также по какому адресу ты изменял инструкцию и каким образом изменял. В окне дизассемблера или через скрипы?

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

Хех, ложная тревога. Понял свою ошибку. Как оказалось первый раз я делал инъекцию на строку push edx, но потом изменил адрес инъекции на 1 байт вверх, на push ecx, а заново скрипт сгенерировать (с нопами) забыл :)

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

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

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

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