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

MasterGH

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

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

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

    129

Комментарии блога, опубликованные MasterGH

  1. Актуально, если под code будет всегда оригинальный код в 10 байт и 10 байт будут другими на другой инструкции.

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

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

    Я и не говорю что стоит отказываться от LUA в CE :) Он достаточно полезный.

    Я тоже не говорю, что стоит отказываться от Lua в CE. Тоже могу сказать, что достаточно полезный. Хотя ничего не писал месяца 4.

     

    2 часа назад, kiwipapayamongoose сказал:

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

     

    Размер свободной ОЗУ уменьшался в плагинах на событии движения мышки по окну Lua-шного дизассемблера. Больше гигабайта за минут 30 и дальше - больше. Вариант выше эту проблему исправил. Потом вышел fix и это дело поправили.

  3. disaasembler.CT, строка 1015

     

    Скрытый текст
    
    		-- Добавление контекстной функции устаноки брейкпоинтов на меню
    		local menuItems = _frmTracelog.findComponentByName('pmTracer').Items
    		local menuItemSetBreakPoint = createMenuItem(menuItems)
    		menuItemSetBreakPoint.Caption = 'Set breakpoints on calls'
    		menuItemSetBreakPoint.OnClick = function ()
    		
    			local resultString = inputQuery('Set name tracelog', 'Name:', 'Change ammo, health... etc')
    			if(resultString ~= nil) then
    				obj.frmTracelog.Caption = resultString
    			end
    		
    			local tableAddresses = obj:GetTableExitLocalBranches(obj.frmTracelog.lvTracer)
    			local tableBreakPoints = debug_getBreakpointList()
    			for i=1, #tableAddresses do
    				local previousAddress = getPreviousOpcode(tableAddresses[i])
    				if(not obj:TableContaints(tableBreakPoints, previousAddress)) then
    					setComment(previousAddress, string.format('RET -->> %s (%s)', i, resultString))
    					debug_setBreakpoint(previousAddress, vtByte, bptExecute)
    				end
    			end
    		end

     

     

  4. Только что, Xipho сказал:

    Например, у меня жена играет в Gardenscapes.

     

    Кстати меня просили помочь со взломом этой игры. Сам я не взломал считай, меня ломало. Поискал в Интенете мод. Там 99 сердец уже было в готовом моде апк, лаки патчером подмена иннап, а вот в минииграх взлом кол-ва ходов с помощью Cheat Engine (скаченного с форума CE для Андроида), хотя потом CE не стали пользоваться, т.к. голды полно.

     

    Еще поиск предметов Hiddent City. Лаки патчер + програ типа AutoIt. Зациклил покупку рубинов через фейковый иннап.

     

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

  5. Могут быть любые баги в больших трейслогах, критических секциях, со множеством потоков. Тут нужно смотреть и отдавать в багрепорт Дарк Байту. Пока остается пользоваться тем что есть.

  6. В 28.07.2017 в 01:39, X86Jumps сказал:

    откуда 3й пунк в контекстном меню в trace?

    установка breakpoint on calls?

     

    Этот пункт сделан Lua скриптом. Думаю, он есть в репозитории у меня и его можно поставить. Без него тоже можно вручную на call-ы поставить брейкпоинты из трейслога. Потом идем в игру, в оконном режиме и нажимаем F5 и снимаем брейкпоинт по F2 пока не перестанут срабатывать эти call-ы. Затем делаем нужное действие в игре и срабатывает первый call. С этого место можно снять трейслог в глубину до адреса параметра. Потом посмотреть этот трейслог.

  7. Я посмотрел документацию, теоретически можно попробовать. Отмечаем галками модули в некотором нашем новом GUI списка модулей. Дальше до начала поиска скрипт ищет все не отмеченные модули и добавляет их в игнор поиска по модулям (список берем из getCommonModuleList). Стартовый и конечный адреса не трогаем. Список игнорируемых модулей запоминаем и восстанавливаем. В какой момент восстанавливать список модулей, надо подумать.

  8. 1 минуту назад, Garik66 сказал:

    Может можно в LUA скрипте прописать класс  TFontDialog и уже обращаться к нему?

     

    Нет. Класс TFontDialog не описан в mainLua.

     

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

  9. Вывести список уникальных классов и версию Cheat Engine

     

    Скрытый текст
    
    function MainLuaProgramm()
    	print ('Vesrion: ' .. getCEVersion()..'\r\n')
    
    	tableComponents = {}
    	local formCount = getFormCount()
    
    	for i=0, formCount-1 do
    
    		local form = getForm(i)
    		local componentCount = form.getComponentCount()
    
    		for j=0, componentCount-1 do
    			local component = form.getComponent(j)
    
    			local containts = false
    			for f=1, #tableComponents do
    				if(tableComponents[f] == component.ClassName) then
    					containts = true
    					break
    				end
    			end
    
    			if(not containts) then
    				table.insert(tableComponents, component.ClassName)
    			end
    		end
    	end
    
    	table.sort(tableComponents)
    	print (table.concat(tableComponents,'\r\n'))
    	print ('\r\nCount: ' .. #tableComponents..'\r\nEnd')
    end
    
    MainLuaProgramm()

     

     

    Скрытый текст
    
    Vesrion: 6.6
     
    TAction
    TActionList
    TAddresslist
    TButton
    TCheckBox
    TCheckGroup
    TCheckListBox
    TColorDialog
    TComboBox
    TDisassemblerview
    TEdit
    TFindDialog
    TFontDialog
    TGroupBox
    THexView
    TIdleTimer
    TImage
    TImageList
    TLabel
    TListBox
    TListView
    TMainMenu
    TMemo
    TMenuItem
    TOpenDialog
    TPageControl
    TPanel
    TPopupMenu
    TProgressBar
    TRadioButton
    TRadioGroup
    TReplaceDialog
    TSaveDialog
    TScrollBox
    TSelectDirectoryDialog
    TShape
    TSpeedButton
    TSplitter
    TSynAASyn
    TSynCppSyn
    TSynEdit
    TSynLuaSyn
    TTabSheet
    TTablist
    TTimer
    TToolBar
    TToolButton
    TTrackBar
    TTreeView
    TframeHotkeyConfig
    TfrmAutoInject
    TfrmLuaEngine 
    
    Count: 52
    End 

     

     

  10. Еще вариант поиска по названию класса.

     

    Ищет по всем доступным окнам CE. Не нужно знать имя компонента. Ну и не нужно теперь лазить в Lazarus-е

    Скрытый текст
    
    function FindComponentByClassName(stringClassName)
    	local formCount = getFormCount()
    	for i=0, formCount-1 do
    		local form = getForm(i)
    		local componentCount = form.getComponentCount()
    		for j=0, componentCount-1 do
    			local component = form.getComponent(j)
    			if(component.ClassName == stringClassName) then
    				--print(component.ClassName ..'__'.. component.Name)
    				return component
    			end
    		end
    	end
    end
    
    
    function MainLuaProgramm()
    
    	local fontDialog = FindComponentByClassName('TFontDialog')
    	if(fontDialog == nil) then
    		showMessage("fontDialog is nil")
    		return
    	end
    
    	local visibleState = true
    	mainForm = createForm(visibleState)
    
    	local testButton = createButton(mainForm)
    	testButton.Caption = 'Set Font'
    
    	testButton.onClick = function (sender)
    		if getSettingsForm().FontDialog1.Execute() then
    			testButton.Font.assign(getSettingsForm().FontDialog1.Font)
    		end
    	end
    
    end
    
    MainLuaProgramm()

     

     

  11. Вызывать

    print('Start')
    print(getSettingsForm())
    print('1')
    print(getSettingsForm().FontDialog1)
    print('2')
    print(getSettingsForm().FontDialog1.Font)
    print('3')

    Без ошибок будет так (адреса будут отличаться)

    Start 
    0989C7F0 
    1 
    00324690 
    2 
    0B946F40 
    3 

    Там где ошибка будет, там проблема и текст дальше выводиться не будет.

  12. Тут для кнопки, а для Label примерно также

    Скрытый текст
    
    function MainLuaProgramm()
    
    	local visibleState = true
    	mainForm = createForm(visibleState)
    
    	local testButton = createButton(mainForm)
    	testButton.Caption = 'Set Font'
    
    	testButton.onClick = function (sender)
    		if getSettingsForm().FontDialog1.Execute() then
    			testButton.Font.assign(getSettingsForm().FontDialog1.Font)
    		end
    	end
    
    end
    
    MainLuaProgramm()

     

    58c2eeef02728_.thumb.png.36501a048b19b9d

  13. Спасибо. Я код неправильный оставил. Очень спешил

    Изменил свой пример в первом посте :) Сделал через вызов функции

    MainLuaProgramm()

    Забыл сделать. Если отмену нажали, то надо конечно это условие ставить

    if(colorDialog.Execute()) then
  14. Несколько интересных ресурсов по Lua

    1. tutorialspoint (хорошие примеры по ООП)

    2. cheatengine forum  примеры кода от пользователя TheyCallMeTim13. Отличый code style.

    3. gammon Примеры.

    4. Официальная документация

    5. "Изучите X за Y минут Где X=Lua" (очень быстро и кратко о синтаксисе, метатаблицах, ООП)

    Исходник пункта 5: learnlua-ru.lua

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

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

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