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

MasterGH

Ветераны
  • Постов

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

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

    129

Сообщения, опубликованные MasterGH

  1. 1 час назад, JasonMuller сказал:

    мне нужно сделать так, что бы при наведение на крестик, менялась картинка

    В функциях-обработчиках событий менять картинку на картинку: OnMouseEnter() и OnMouseLeave() на TCEImage компоненте.

     

    1 час назад, JasonMuller сказал:

    Когда я создаю панель, у меня вокруг неё рамка белая, как её убрать?

    Отказаться от панели

     

    1 час назад, JasonMuller сказал:

    Как сделать углы у трейнера закруглёнными, а не острыми?

    1. Использовать на форме TCEImage  и прозрачность,

    2. Использовать UDF1.DragNow() в обработчике OnMouse для TCEImage

    • Плюс 2
  2. Скорее всего, проблема совместимости и её нужно сначала определить

    Можно проверить формат поинтера. Внимание на формат поинтера с кавычками и без  "game.exe+ " и game.exe+.

    Можно проверить на совместимость. Создать таблицу с нуля на 6.8.1. На 6.8.1 попробуй сделать новую таблицу и руками забить такие же данные как в 6.7

     

    12 часов назад, Alex2411 сказал:

    когда выделяешь в таблице темно синий цвет полосы  как поменять ?

    Писать DarkByte на его форум. Скорее всего, просто так его не изменить. Нет опций, не нашел ничего на Lua для этого. На Lazarus и Delphi есть примеры замены цвета на ListBox-е на обработчике "ListBox1DrawItem"

    Спойлер
    
    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
      ARect: TRect; State: TOwnerDrawState);
    begin
      with ListBox1.Canvas do begin
        if odFocused in State then
          Brush.Color := clHighlight else
          Brush.Color := clWindow;
        FillRect(ARect);
        TextOut(ARect.left, ARect.Top, Listbox1.Items[Index]);
        if odFocused in State then
          DrawFocusRect(ARect);
      end
    end;

    Открывать исходники Cheat Engine и разбираться как вообще это делается, а потом думать как это сделать в текущей версии CE. Проще спросить у DarkByte

     

  3. 2 часа назад, Alex2411 сказал:

    в таблице не изменяються значения когда они изменилсь в игре. в 6.7

    1. Повторить баг с программой gtutorial-i386.exe на версиях CE 6.7: с cheatengine-x86_64.exe и с cheatengine-i386.exe

    2. Прислать ссылки на две таблицы

    Дальше посмотрим...

  4. Есть еще способ — автоматизировать действия пользователя. За пару секунд или более при старте системы само все настроится и закроется. Любой язык программирования + WinAPI  или подходящие программы по автоматизации действий для Windows

  5. В 02.07.2018 в 18:14, Ceyzer сказал:

    Абсолютно бестолковое видео для новичков

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

    Предлагаю смотреть на правила форума. Там ничего не написано про Ваши замечания.

    • Плюс 1
  6. 5 часов назад, mrPTyshnik сказал:

    2017.4.2f2

    Последний модуль для unity-2017.3.0. Ждать появления здесь

    Можешь сам пропатчить или собрать под 2017.4.2f2, сравнивая модули. Я без понятия что и как там. Надо разбираться

     

    5 часов назад, mrPTyshnik сказал:

    я никогда не юзал dnSpy для отладки игр на Unity. CE(mono dissector) + анализ ASCHARP.dll вот и все.

     

    С CE monodessector понятно. А вот  ASCHARP.dll в первый раз вижу. К сожалению, не нагуглил ничего

     

  7. 4 часа назад, srg91 сказал:

    Поэтому можно попробовать поставить обычный Python, проверить что в нём работает asyncio, доустановить нужные AirtestIDE модули и указать его как основной для AirtestIDE.

     

    Поставил. Логи

    Спойлер

    image.png

     

    Спойлер
    
    
    "C:\AirtestIDE\AirtestIDE" runner "C:\AirtestIDE\Scripts Poco\DELETE.air"  --log "C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40"
    ============================================================
    
    [Start running..]
    add sys.path:
    ['C:\\Python27\\Lib']
    do not connect device
    save log in 'C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40'
    ======================================================================
    [Finished]
    ERROR: setUpClass (app.widgets.code_runner.ide_launcher.AirtestIDECase)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "airtest\cli\runner.py", line 28, in setUpClass
      File "airtest\cli\runner.py", line 133, in setup_by_args
      File "airtest\core\api.py", line 105, in auto_setup
      File "airtest\core\api.py", line 62, in connect_device
      File "airtest\core\api.py", line 31, in init_device
      File "airtest\core\helper.py", line 108, in import_device_cls
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\core\android\android.py", line 10, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\core\android\ime.py", line 3, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\core\android\yosemite.py", line 3, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\utils\apkparser\__init__.py", line 1, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\utils\apkparser\apk.py", line 20, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "airtest\utils\apkparser\axmlprinter.py", line 23, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "xml\sax\saxutils.py", line 6, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "urllib\request.py", line 88, in <module>
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
      File "http\client.py", line 1218, in <module>
      File "C:\Python27\Lib\ssl.py", line 134
        except socket_error, e:
                           ^
    SyntaxError: invalid syntax
    
    ----------------------------------------------------------------------
    Ran 0 tests in 0.060s
    
    FAILED (errors=1)
    
    
    ============================================================
    
    

     

     

     

    Я думаю мы с этой проблемой очень много времени и сил потратим. По этому забьем. 

     

    Я думаю, сделаю свою функцию ожидания распознавания картинки и в ней впишу try/catch и проверку на картинки случайных диалогов.

     

     

  8. 18 часов назад, srg91 сказал:

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

    Есть версия и под Mac (последняя 0.1.3)

     

    Запустил

    import sys
    message = 'Executable: {}\nVersion: {}'.format(sys.executable, sys.version)
    raise Exception(message)

    Результат

    Спойлер

    image.png

     

  9. @srg91

    Привет. Запустил. Логи

    Спойлер
    Цитата

    [Start running..]
    do not connect device
    save log in 'C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40'
    [12:09:22][DEBUG]<airtest.core.android.adb> C:\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe devices
    [12:09:22][DEBUG]<airtest.core.android.adb> C:\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe devices
    3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)]
    ----------------------------------------------------------------------
    Ran 1 test in 0.303s

    OK
    [Finished]

     

     

  10. Версия Python 3.5.3

     

    В Python плохо шарю. Ищу варианты написания сопрограмм и предлагаю желающим помочь мне с кодом на Python 

     

    Исходник

    Спойлер
    
    # -*- encoding=utf8 -*-
    __author__ = "gzliuxin"
    __title__ = "test script title"
    __desc__ = """
    this is a test script.
    """
    
    # install demo apk
    PKG = "com.NetEase.PocoDemo"
    if PKG not in device().list_app():
        import os
        path = os.path.join(args.script, "poco-demo.apk")
        device().install_app(path)
    
    # restart app
    stop_app(PKG)
    start_app(PKG)
    wait(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080)))
    
    # init UnityPoco
    from poco.drivers.unity3d import UnityPoco
    poco = UnityPoco()
    
    poco(text="Start").click()
    poco(text="basic").click()
    
    # assert empty
    result = poco(type="Text", name="Text").get_text()
    assert_equal(bool(result), False)
    
    # input text
    poco(type="InputField").set_text("Hello World")
    sleep(1.0)
    
    # assert text 
    result = poco(type="Text", name="Text").get_text()
    assert_equal(result, "Hello World")
    
    poco(text="Back").click()

    image.png

     

    Вопрос1. Как выполнять отдельной сопрограммой код ниже или любой другой на Python 3.5.3?

    wait(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080)))
    
    if exists(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080))):
    	poco(text="Start").click()

     

    Попытка из Гугла

    Спойлер
    
    import asyncio
    
    @asyncio.coroutine
    def hello_world():
        print("Hello World!")
    
    loop = asyncio.get_event_loop()
    # Blocking call which returns when the hello_world() coroutine is done
    loop.run_until_complete(hello_world())
    loop.close()

     

     

    Ошибка с импортом модуля:

    Спойлер

    image.png

     

    Вопрос2. Как импортировать этот модуль? Или через другой код сопрограмм

  11. Обновление Cheat Engine

     

    Спойлер
    Цитата

    June 23 2018:Cheat Engine 6.8.1 Released:

    Apparently 6.8 contained a couple of annoying bugs, so here's an update that should hopefully resolve most issues.
    Also a few new features that can come handy
    Download: Cheat Engine 6.8.1

    Fixes:

    • Fixed several issues with the structure compare
    • Fixed the commonality scanner from picking up unrelated registers for comparison
    • Fixed speedhack hotkeys
    • Fixed ultimap 1
    • Fixed a bunch of random access violations
    • Fixed Lua dissectCode.getStringReferences now also returns the string
    • Fixed Lua breakpoints that specify a specific function
    • Fixed Lua toAddress when the 2nd parameter is an address
    • Fixed assembling xmm,m32
    • Fixed issue when disassembling AVX instructions
    • Fixed rightclicking r8-r9 in the registers window
    • Fixed the plugin system for DBVM
    • Fixed DBVM memory allocations when smaller than 4KB

    • Additions and changes:

    • Added translation strings for the all type settings
    • You can now drop files into the auto assembler
    • auto assembler commands allocnx (allocate no execute) and allocxo (allocate execute only)
    • The memoryview windows's hexadecimalview now shows the allocationbase as well, and can be doubleclicked to go there
    • Added support for mono dll's that do not export g_free
    • Changed "make page writable" to multiple options
    • Improved DBVM speed slightly

    • Lua:

    • added RemoteThread class object

     

     

    • Понравилось 1
  12. 7 часов назад, HaskyGame сказал:

    взломать адрес жизни утки, но не могу его найти, и не понимаю как его вообще найти

     

    В теории: 

    1. Поиск адреса брони или поиск адреса координаты, или поиск счетчиков вызовов call-ов через Ultimap о проигрышах;

    2. Далее по коду до условия проигрыша. Исправить условие проигрыша

     

  13. 2 часа назад, Razi сказал:

    а запись тогда как делать в адрес в hex формате?

     

    Если CE 6.8, то 

    Спойлер
    
    for x = 1, 3 do
      local address = 0x009E93E0 + x * 4
      local stringValue = CEEditsnowbt[x].Text
      local intValue = tonumber(stringValue)  
      writeInteger(address, intValue)
    end

     

    Если CE 6.7 и ниже

    Спойлер
    
    for x = 1, 3 do
      local address = 0x009E93E0 + x * 4
      local stringValue = CEEditsnowbt[x].Text
      local intValue = tonumber(stringValue,16)  
      writeInteger(address, intValue)
    end

     

     

    В  "CEEditsnowbt[x].Text" должна быть строка с префиксом "0x", т.е. "0x100" например

     

    Предлагаю использовать пошаговую отладку Lua для разбора какие значения в каких переменных.

    Спойлер

    Пошаговая отладка Lua скриптов.png

     

    Подробнее

    • Плюс 1
  14. Не такой команды :)

    tonumer

     

    В CE 6.8 не работает вариант tonumber("0x9999",16). Работает tonumber("0x9999")
     

    Спойлер
    
    function DecToHex(stringValue)  return string.format('0x%08X', stringValue) end
    function HexToDec(stringValue)  return tonumber(stringValue) end
    
    function CEButton1Click(sender)
      UDF1.CEEdit1.Text = DecToHex(100)
    end
    
    function CEButton2Click(sender)
      local value =  HexToDec(UDF1.CEEdit1.Text)
      print(value)
    end

     

     

  15. Не тестил, может не работать

    -- "QQQQQQQXXXXXXXXX" двигаем 2-х байтовое значение вправо на 9, влево на 7  
    local address = 0x00241B70
    local value = readSmallInteger(address)
    local firstParam = bShr(value, 9)
    local secondParam = bShl(value, 7)
    print("firstParam = ".. firstParam)
    print("secondParam = ".. secondParam)
  16. 18 часов назад, temtriss сказал:

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

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

    GetLastError показывает 2 кода

    0x12 или 0x2

     

    Судя по коду игра может всегда возвращать FALSE. Других return не видно. Возможно еще стоит написать обработчик исключения и вывод информации. Можно прогнать под пошаговой отладкой в отладчике

    Коды ошибок при работе с файлами

  17. 3 часа назад, DieVis сказал:

    Неужели таки, в 6.7 я этого не мог найти.

    Верно

    9 часов назад, SER[G]ANT сказал:

    Added a "revert to saved scan" option  (lets you undo changes) 
    Added a "forgot scan" option (in case you forgot what you're doing) 

    При сканировании

    Спойлер

    image.pngimage.png

     

    43 минуты назад, X86Jumps сказал:

    поиск в trace не пофиксили?

     

    А что с ним не так было?

    Работает фильтр на конечное условие и на поиск этого условия. На начальное условие не смотрел

    Спойлер

    image.png image.png

     

     

     

  18. Изменения в Lua при сравнении файлов. Возможно позже напишу, что интересного можно делать в новой бета версии CE

    Спойлер
    
    writePointer(address,value)
    writePointerLocal(address,value)
    
    У enumModules(processid OPTIONAL):
      Name : String containing the modulename  
      
      
    reinitializeSelfSymbolhandler(waittilldone: BOOLEAN OPTIONAL, default=TRUE): reinitializes the selfsymbolhandler. E.g when new modules have been loaded to CE process
    
    
    registerStructureAndElementListCallback(function StructureListCallback(), function elementlistcallback(id1,id2) ) : Registers a function to be called when a structure needs to be dissected 
      function StructureListCallback() will be a function that returns an array of list of structures in table format
      the entries are build up as:
        name: string - name of the structure
        id1: integer - id you can use for whatever(e.g moduleid). It will be passed on to elementlistcallback when this structure is picked
        id2: integer - id you can use for whatever(e.g structureid inside the module). It will be passed on to elementlistcallback when this structure is picked
    
      
      function elementlistcallback(id1,id2) will be a function that returns an array of structure elements in table format
      the entries are build up as:
        name: string
        offset: integer
        vartype: variabletype (look up vtByte, vtWord, etc..)
    
      tip: If you return an empty table the structure will not be created. You can use this to create the structure layout yourself and register that instead
    
    unregisterStructureAndElementListCallback(ID)
    
    
    showSelectionList(title, caption, stringlist, allowCustomInput OPTIONAL): integer,string - Shows a menu with the given list. It returns the linenumber (starting at 0) and the selected string.  Linenumber is -1 if the user was allowed to enter custom input
    
    
    getWindowlist(): Returns a table with the windowlist (pid - window caption ).  The table is formatted as : {pid,{id,caption}}
    
    
    
    MainForm.OnProcessOpened: function(processid, processhandle, caption) - Define this if you want to be notified when a new process has been opened. Called only once from the main thread. It is recommended to use this instead of onOpenProcess
    
    
    cpuid(EAX,ECX): returns a table with CPUID info (EAX, EBX, ECX, EDX)
    
    gc_setPassive(state: boolean): enables/disables the passive garbage collector
    gc_setActive(state: boolean, interval: integer, minsize: integer): enables/disables the active garbage collector and lets you configure the interval and minimim size
    
    
    Form Class: (Inheritance: ScrollingWinControl->CustomControl->WinControl->Control->Component->Object)
    properties
      FormState: FormState string ReadOnly - The current state of the form. Possible values: fsCreating, fsVisible, fsShowing, fsModal, fsCreatedMDIChild, fsBorderStyleChanged, fsFormStyleChanged, fsFirstShow, fsDisableAutoSize 
    
      
      ListItems class : (Inheritance: TObject)
    methods
      displayRect(code): returns the displayed rectangle of the listitem. code can be: drBounds(0), drIcon(1), drLabel(2), drSelectBounds(3)
      displayRectSubItem(code): returns the displayed rectangle of the listitem. code can be: drBounds(0), drIcon(1), drLabel(2), drSelectBounds(3)
    
      
      
    Stream Class
    methods
      readByte(): integer
      writeByte(integer)
      readWord(): integer
      writeWord(integer)
      readDword(): integer
      writeDword(integer)
      readQword(): integer
      writeQword(integer)
      
      
      
    MemoryRecord Class:
    properties
      AddressString: string - Get the address string shown in CE (ReadOnly)
      VarType: ValueType (string) - The variable type of this record. See vtByte to vtCustom
      Type: ValueType (number) - The variable type of this record. See vtByte to vtCustom
      CustomTypeName: String - If the type is vtCustom this will contain the name of the CustomType
      
      Options: String set - a string enclosed by square brackets filled with the options seperated by a comma. Valid options are: moHideChildren, moActivateChildrenAsWell, moDeactivateChildrenAsWell, moRecursiveSetValue, moAllowManualCollapseAndExpand, moManualExpandCollapse
      
      DropDownLinked: boolean - if dropdown list refers to list of another memory record eg. (memrec name)
      DropDownLinkedMemrec: string - Description of linked memrec or emptystring if not linked
      DropDownList : StringList - list of "value:description" lines, lists are still separate objects when linked, read-write
      DropDownReadOnly: boolean - true if 'Disallow manual user input' is set
      DropDownDescriptionOnly: boolean - self explanatory
      DisplayAsDropDownListItem: boolean - self explanatory
      DropDownCount: integer - equivalent to .DropDownList.Count
      DropDownValue[index] : Array to access values in DropDownList (ReadOnly)
      DropDownDescription[index] : Array to access Descriptions in DropDownList (ReadOnly)
    
      Parent: MemoryRecord - self explanatory
      
      
      
    StructureFrm class:
    createStructureForm(address, groupname OPTIONAL, structurename OPTIONAL)
    enumStructureForms() : returns a table of StructureFrm objects (can be useful for finding a structure window with the wanted structure)
    
    
    properties:
    MainStruct: structure - The currently selected structure
    
    ColumnCount: integer - the number of columns (columns=address)
    Column[index]: structColumn - Fetches a structColumn object from the structure form
    
    GroupCount: integer - The number of groups
    Group[index]: structGroup - Fetches a structGroup object from the structure form
    
    
    
    StructureElement class: (Inheritance: Object)
    Methods:
      getValue(address) : Gets the memory from the specified address and interprets it according to the element type
      setValue(address,value): Sets the memory at the specified address to the interpreted value according to the element type
      getValueFromBase(baseaddress): same as getValue but uses the offset to calculate the final address
      setValueFromBase(baseaddress,value): same as setValue but uses the offset to calculate the final address
    
    dbk_readMSR(msr): Reads the msr
    dbk_writeMSR(msr, msrvalue): Writes the msr 
    dbk_executeKernelMemory(address, parameter) :
      Executes a routine from kernelmode (e.g a routine written there with auto assembler)
      parameter can be a value or an address. It's up to your code how it's handled
    
    
    dbvm_initialize(offloados:Boolean OPTIONAL, reason:String OPTIONAL) : Initializes the dbvm functions (dbk_initialize also calls this) offloados is a boolean that when set will offload the system onto dbvm if it's not yet running (and only IF the dbk driver is loaded)
    dbvm_readMSR(msr): See dbk_readMSR but then using dbvm
    dbvm_writeMSR(msr, value): See dbk_writeMSR
    dbvm_getCR4(): Returns the real Control Register 4 state
    
    dbvm_readPhysicalMemory(address, size): bytetable
    dbvm_writePhysicalMemory(address, size, bytetable)
    
    dbvm_watch_writes(PhysicalAddress, bytesize OPTIONAL, OPTIONS OPTIONAL,  internalentrycount OPTIONAL) : 
      Starts watching writes to the given address range
      OPTIONS is a binary field.
        (1 << 0): Log the same RIP multiple times (if different registers)
        (1 << 1): Ignore the size field and log everything in the specified page
        (1 << 2): Logs record the floating point state
        (1 << 3): Logs contain a 4KB stack snapshot
        (1 << 4): does nothing
        (1 << 5): If the number of recorded entries gets bigger than internalentrycount, grow the list instead of discarding the entries
    
      On success returns an ID to use with dbvm_watch_retrievelog and dbvm_watch_disable
    
    
    dbvm_watch_reads(PhysicalAddress, bytesize OPTIONAL, OPTIONS OPTIONAL,  internalentrycount OPTIONAL) : see dbvm_watch_writes but then for reads and writes
    dbvm_watch_retrievelog(ID) : Returns an array of watch event data. (Context of the system at the time of the event, like registers)
    dbvm_watch_disable(ID) : Disables the watch operation
    
    
    dbvm_cloak_activate(physicalbase, virtualbase OPTIONAL): 
      Hides an executable memory range (4096 bytes) from snooping eyes
      Note: It is recommended to cause a copy-on-write on the target first, else this will affect all processes that have this memory block loaded
    dbvm_cloak_deactivate(physicalbase): Disables the cloak and restores the executable memory to what the system thinks it is
    dbvm_cloak_readOriginal(physicalbase): Reads the memory that will get executed.  On success returns a 4096 byte long bytetable (remember, lua indexes start at 1, so offset 0 is index 1)
    dbvm_cloak_writeOriginal(physicalbase, bytetable[4096]): Writes the memory that will get executed. 
    
    dbvm_changeregonbp(physicaladdress, changereginfo, virtualaddress OPTIONAL): boolean
      sets a breakpoint at the given position. When a breakpoint hits the registers will be changed according to the changereginfo table
        changereginfo table:  (set the field to nil, or don't define it, if you don't want to change it)
          newCF: integer/boolean (false=0, true=1) 
          newPF: integer/boolean (false=0, true=1) 
          newAF: integer/boolean (false=0, true=1) 
          newZF: integer/boolean (false=0, true=1) 
          newSF: integer/boolean (false=0, true=1) 
          newOF: integer/boolean (false=0, true=1)
          newRAX: integer
          newRBX: integer
          newRCX: integer 
          newRDX: integer
          newRSI: integer 
          newRDI: integer
          newRBP: integer 
          newRSP: integer
          newRIP: integer
          newR8:  integer
          newR9:  integer
          newR10: integer
          newR11: integer
          newR12: integer
          newR13: integer
          newR14: integer
          newR15: integer
    
    dbvm_log_cr3_start() : Tells DBVM to record (up to 512) unique CR3 values it encounters
    dbvm_log_cr3_stop() : Stops the logging and returns the results as a table
    
    
    getPhysicalAddressCR3(CR3, address): Looks up the physical address for the given virtual address in the given pagetable base. Returns nil if not paged
    readProcessMemoryCR3(CR3, address, size): Reads the virtual memory of the given process's CR3 value. Returns a bytetable on success, nil if fail to read (paged out)
    writeProcessMemoryCR3(CR3, address, bytetable): Reads the virtual memory of the given process's CR3 value
     
     
    createD3DHook(textureandcommandlistsize OPTIONAL, hookmessages OPTIONAL)
    methods
      enableConsole(virtualkey): Adds a (lua)console to the specific game. The given key will bring it up (0xc0=tilde(`~))
    
    Disassembler Class (Inheritance: Object)
    Methods
          commentsoverride: string - If set, this will be the comments/LastParamatersToString result
          
    HotkeyHandlerThread(Inheritence: Thread)
    getHotkeyHandlerThread() : Returns the hotkey handler thread used internally by CE
    
    properties
      state: 0 ('htsActive')=Active , 1('htsMemrecOnly')=Memory records only, 2('htsNoMemrec')=Everything except memoryrecords, 3('htsDisabled')=disabled
    
    methods
      -

     

     

    Карта сравнений (справа. на глаз изменений не более 20%)

    Спойлер

    image.png

     

  19. 1. Можно  создать класс AutoScreenSize.cs через dnSpy внутри Assembly-CSharp.dll :

    Спойлер
    
    using System.Collections;
    using UnityEngine;
    
    public class AutoScreenSize : MonoBehaviour
    {
        private static bool forceResize = true;
        private static AutoScreenSize instance = null;
     
        private static int width = 1024;
        private static int height = 768;
    
        private static WaitForSeconds waitForSeconds = new WaitForSeconds(1f);
    
        private void Start()
        {
            if (instance != null)
            {
                Destroy(gameObject);
                return;
            }
    
            DontDestroyOnLoad(this);
    
            StartCoroutine(UpdateScreenMode());
    	}
    
        private IEnumerator UpdateScreenMode()
        {
            while (true)
            {
                if (Screen.fullScreen || (forceResize && (Screen.width != width || Screen.height != height)))
                {
                    Screen.SetResolution(width, height, false);
                }
                yield return waitForSeconds;
            }
    	}
    
        public static void InitComponent()
        {
            if(instance == null)
            {
                GameObject newGameObject = new GameObject("AutoScreenSize");
                newGameObject.AddComponent<AutoScreenSize>();
            }
    
        }
    }
    

     

     

    2. Можно  вызывать метод AutoScreenSize.InitComponent() из существующего метода Start() из существующего  компонента, который есть в игре .

     

    Если все правильно получилось сделать, то будет переход в оконный режим 1024x768, каждый раз, когда игра будет ставить полноэкранный режим.

     

    Еще  вариант. В теории можно сделать для любой игры на Unity на основе скрипта Cheat Engine, который внедряет C# dll в моно движок. Это скрипт где-то на форуме. На Lua останется написать выбор процесса Unity или запуск процесса по пути exe игры.

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

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

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