Ai
1 Star 0 Fork 0

phy0292/cheat-engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
cheatengine.lpr 13.73 KB
一键复制 编辑 原始数据 按行查看 历史
Dark Byte 提交于 2020-12-11 06:39 +08:00 . dark mode support
program cheatengine;
{$mode objfpc}{$H+}
uses
{$ifdef darwin}
cthreads,
{$endif}
first,
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, {CEInterfaces,} // this includes the LCL widgetset
{$ifdef darwin}
//
macport, macportdefines,coresymbolication, macexceptiondebuggerinterface,
macCreateRemoteThread, macumm, machotkeys, macPipe,
{$endif}
betterControls,
controls, sysutils, Forms, LazUTF8, dialogs, SynCompletion, MainUnit,
CEDebugger, NewKernelHandler, CEFuncProc, ProcessHandlerUnit, symbolhandler,
Assemblerunit, hypermode, byteinterpreter, addressparser, autoassembler,
ProcessWindowUnit, MainUnit2, Filehandler, dbvmPhysicalMemoryHandler,
frameHotkeyConfigUnit, formsettingsunit, HotkeyHandler, formhotkeyunit,
AdvancedOptionsUnit, inputboxtopunit, plugin, pluginexports, tlgUnit,
aboutunit, frmProcesswatcherExtraUnit, frmProcessWatcherUnit,
ModuleSafetyUnit, frmExcludeHideUnit, HotKeys, TypePopup, CommentsUnit,
FoundCodeUnit, foundlisthelper, unrandomizer, SaveFirstScan, savedscanhandler,
memscan, KernelDebugger, formDifferentBitSizeUnit, formAddressChangeUnit,
Changeoffsetunit, speedhack2, formPointerOrPointeeUnit, AccessCheck,
formmemoryregionsunit, OpenSave, formProcessInfo, frmautoinjectunit,
MenuItemExtra, MemoryBrowserFormUnit, disassemblerviewlinesunit,
disassemblerviewunit, PasteTableentryFRM, frmBreakpointlistunit,
DissectCodeThread, DissectCodeunit, Valuechange, FindWindowUnit, stacktrace2,
frmstacktraceunit, frmBreakThreadUnit, FormDebugStringsUnit,
frmDissectwindowUnit, frmCapturedTimersUnit, frmEnumerateDLLsUnit,
frmThreadlistunit, frmMemoryAllocHandlerUnit, circularBuffer, PEInfoFunctions,
PEInfounit, FileMapping, frmFindstaticsUnit, frmModifyRegistersUnit,
frmHeapsUnit, savedisassemblyfrm, frmSaveMemoryRegionUnit, frmLoadMemoryunit,
formAddToCodeList, frmFillMemoryUnit, frmCodecaveScannerUnit,
frmSelectionlistunit, symbolconfigunit, frmFloatingPointPanelUnit,
frmTracerUnit, DriverList, frmRegistersunit, formChangedAddresses, frmGDTunit,
frmIDTunit, frmDisassemblyscanunit, frmReferencedStringsUnit,
StructuresAddElementfrm, Structuresfrm, PointerscannerSettingsFrm,
simpleaobscanner, PointerscanresultReader, pointervaluelist, rescanhelper,
pointerscannerfrm, VirtualMemory, ValueFinder, frmRescanPointerUnit,
SyncObjs2, ManualModuleLoader, SynHighlighterAA, APIhooktemplatesettingsfrm,
frmAAEditPrefsUnit, disassembler, hexviewunit, guisafecriticalsection,
debugeventhandler, formFoundcodeListExtraUnit, debuggertypedefinitions,
addresslist, MemoryRecordUnit, ThreadlistExFRM, windows7taskbar, tablist,
frmStructuresConfigUnit, VEHDebugger, VEHDebugSharedMem, DebuggerInterface,
WindowsDebugger, DebuggerInterfaceAPIWrapper, frmDebugEventsUnit, changelist,
tableconverter, DBK32functions, debug, multicpuexecution, vmxfunctions,
frmPagingUnit, bigmemallochandler, KernelDebuggerInterface, CustomTypeHandler,
LuaHandler, frmLuaEngineUnit, frmMemviewPreferencesUnit,
frmBreakpointConditionUnit, frmTracerConfigUnit, frmStackViewUnit, luaJit,
ScrollBoxEx, fileaccess, ceguicomponents, formdesignerunit, LuaCaller,
LuaSyntax, cesupport, trainergenerator, genericHotkey,
frmExeTrainerGeneratorUnit, luafile, xmplayer_server, xmplayer_defines,
ExtraTrainerComponents, frmAdConfigUnit, IconStuff, cetranslator,
frmStringMapUnit, MemFuncs, frmStringPointerScanUnit,
frmStructPointerRescanUnit, sharedMemory, disassemblerComments,
frmFilePatcherUnit, LuaCanvas, LuaPen, LuaFont, LuaBrush, LuaPicture, LuaMenu,
LuaDebug, frmUltimapUnit, DBK64SecondaryLoader, frmHotkeyExUnit,
SymbolListHandler, networkInterface, networkInterfaceApi, networkConfig,
LuaThread, LuaGraphic, LuaProgressBar, d3dhookUnit, LuaOldD3DHook,
LuaWinControl, frmSetCrosshairUnit, StructuresFrm2, scrollTreeView,
frmStructures2ElementInfoUnit, frmStructureLinkerUnit, LuaMemoryRecord,
LuaStructure, LuaForm, regionex, LuaRegion, frmgroupscanalgoritmgeneratorunit,
vartypestrings, LuaXMPlayer, groupscancommandparser, LuaMemscan, LuaFoundlist,
LuaRadioGroup, RemoteMemoryManager, LuaRasterImage, multilineinputqueryunit,
LuaCheatComponent, LuaAddresslist, frmDriverLoadedUnit, memdisplay,
frmSortPointerlistUnit, LuaClassArray, LuaObject, LuaComponent, LuaControl,
LuaStrings, LuaStringlist, LuaCustomControl, LuaGraphicControl, LuaPanel,
LuaImage, LuaButton, LuaCheckbox, LuaClass, LuaGroupbox, LuaListbox,
LuaCombobox, LuaTrackbar, LuaCollectionItem, LuaListcolumn, LuaEdit, LuaMemo,
LuaCollection, LuaListColumns, LuaListItem, LuaListItems, LuaListview,
LuaTimer, LuaGenericHotkey, LuaFileDialog, LuaStream, LuaTableFile,
LuaMemoryRecordHotkey, LuaMemoryView, LuaD3DHook, CustomBase85,
frmMemoryViewExUnit, LuaDisassembler, LuaDissectCode, LuaByteTable, LuaBinary,
frmD3DHookSnapshotConfigUnit, frmsnapshothandlerUnit, frmSaveSnapshotsUnit,
frmD3DTrainerGeneratorOptionsUnit, lua_server, frmAssemblyScanUnit,
frmManualStacktraceConfigUnit, cvconst, NetworkDebuggerInterface,
DisassemblerArm, LastDisassembleData, elfsymbols, assemblerArm,
frmPointerscanConnectDialogUnit, PageMap, CELazySocket,
PointerscanNetworkCommands, frmpointerrescanconnectdialogunit,
frmMergePointerscanResultSettingsUnit, AddresslistEditor,
FrmMemoryRecordDropdownSettingsUnit, frmMemrecComboboxUnit, tracerIgnore,
DotNetPipe, DotNetTypes, LuaPipeServer, LuaPipe, LuaPipeClient,
CEListviewItemEditor, LuaTreeview, LuaTreeNodes, LuaTreeNode, LuaCalendar,
LuaSymbolListHandler, LuaFindDialog, LuaCommonDialog, LuaSettings,
frmReferencedFunctionsUnit, LuaPageControl, DebugHelper,
frmNetworkDataCompressionUnit, lazcontrols, LuaApplication, ProcessList,
pointeraddresslist, frmResumePointerscanUnit, frmSetupPSNNodeUnit,
PointerscanWorker, PointerscanStructures, PointerscanController, zstreamext,
PointerscanConnector, PointerscanNetworkStructures, AsyncTimer,
PointerscanSettingsIPConnectionList, MemoryStreamReader, commonTypeDefs,
Parsers, Globals, NullStream, RipRelativeScanner, LuaRIPRelativeScanner,
VirtualQueryExCache, disassemblerthumb, AccessedMemory, LuaStructureFrm,
MemoryQuery, pointerparser, GnuAssembler, binutils, dbvmLoadManual, mikmod,
frmEditHistoryUnit, LuaInternet, xinput, frmUltimap2Unit, cpuidunit, libipt,
DPIHelper, Graphics, fontSaveLoadRegistry, registry, frmWatchlistUnit,
frmWatchListAddEntryUnit, frmBusyUnit, FindDialogFix, LuaCustomType, LuaSQL,
bCrypt, feces, askToRunLuaScript, frmDBVMWatchConfigUnit,
frmStructuresNewStructureUnit, frmDotNetObjectListUnit, vextypedef,
frmFindDialogUnit, frmRearrangeStructureListUnit,
autoassemblerexeptionhandler, frmstructurecompareunit, addressedit,
frmChangedAddressesCommonalityScannerUnit, ceregistry, LuaRemoteThread,
LuaManualModuleLoader, symbolhandlerstructs, frmOpenFileAsProcessDialogUnit,
BetterDLLSearchPath, UnexpectedExceptionsHelper, frmExceptionRegionListUnit,
frmExceptionIgnoreListUnit, frmcodefilterunit, CodeFilterCallOrAllDialog,
frmBranchMapperUnit, frmSymbolEventTakingLongUnit, LuaCheckListBox,
textrender, diagramtypes, diagramblock, diagram, LuaDiagram, LuaDiagramBlock,
LuaDiagramLink, diagramlink, BreakpointTypeDef, frmFoundlistPreferencesUnit,
LuaHeaderSections, frmDebuggerAttachTimeoutUnit, cheatecoins,
frmMicrotransactionsUnit, frmSyntaxHighlighterEditor, LuaCustomImageList,
dotnethost, rttihelper, cefreetype, LuaDotNetPipe, LuaRemoteExecutor,
newRadioButton, newCheckbox, newbutton;
{$R cheatengine.res}
{$IFDEF windows}
{$R manifest.res} //lazarus now has this build in (but sucks as it explicitly turns of dpi aware)
//{$R Sounds.rc}
//{$R images.rc}
{$ifdef cpu32}
{$SetPEFlags $20}
{$endif}
{$ENDIF}
{$R sounds.res}
{$R Images.res}
procedure HandleParameters;
{Keep in mind: Responsible for not making the mainform visible}
var i: integer;
mainformvisible: boolean;
p: string;
tabletoload: string;
origin: string;
begin
tabletoload:='';
origin:='';
mainformvisible:=true;
try
for i:=1 to Paramcount do
begin
p:=paramstr(i);
//ShowMessage('Param '+inttostr(i)+' = '+p);
if p<>'' then
begin
{$ifdef darwin}
if p='hasrights' then continue;
{$endif}
if p[1]='-' then
begin
//could be -ORIGIN
if uppercase(copy(p,1,8))='-ORIGIN:' then
origin:=AnsiDequotedStr(copy(p,9, length(p)-8),'"');
end
else
if (pos('.CETRAINER', uppercase(p))>0) or (pos('.CT', uppercase(p))>0) then
begin
//add the path of this CT to the lua lookup
LUA_DoScript('package.path = package.path .. [[;'+ExtractFilePath(p)+'?.lua]];');
mainformvisible:=uppercase(ExtractFileExt(p))<>'.CETRAINER';
tabletoload:=p; //mark this trainer to be loaded
end;
end;
end;
if tabletoload<>'' then
begin
//it needs to load a table
if fileexists(tabletoload)=false then //try to fix this
begin
if fileexists(WinCPToUTF8(tabletoload)) then
tabletoload:=WinCPToUTF8(tabletoload)
else
if fileexists(UTF8ToWinCP(tabletoload)) then
tabletoload:=UTF8ToWinCP(tabletoload);
end;
if origin='' then
origin:=ExtractFilePath(tabletoload);
if origin<>'' then
LUA_DoScript('TrainerOrigin=[['+origin+']]');
try
try
if mainformvisible then LoadSettingsFromRegistry;
LoadTable(tabletoload,false);
MainForm.Savedialog1.FileName:=tabletoload;
finally
if ExtractFileName(tabletoload)='CET_TRAINER.CETRAINER' then //Let's just hope no-one names their trainer exactly this...
DeleteFile(tabletoload);
end;
except
on e: exception do
begin
MessageDlg('Failure loading the trainer. Reason :'+e.message, mterror, [mbok], 0);
application.Terminate;
end;
end;
end
else
LoadSettingsFromRegistry;
except
end;
for i:=0 to mainform.LuaForms.count-1 do
if tceform(mainform.luaforms[i]).visible then
begin
//first visible window in the formlist becomes the new taskbar window
try
tceform(mainform.luaforms[i]).ShowInTaskBar:=stAlways;
tceform(mainform.luaforms[i]).formstyle:=fsStayOnTop;
tceform(mainform.luaforms[i]).formstyle:=fsNormal;
application.title:=tceform(mainform.luaforms[i]).Caption;
application.icon:=tceform(mainform.luaforms[i]).Icon;
except
end;
break;
end;
{$ifdef darwin}
frmmacumm.visible:=true;
{$else}
mainform.visible:=mainformvisible;
{$endif}
end;
type TFormFucker=class
private
procedure addFormEvent(Sender: TObject; Form: TCustomForm);
end;
procedure TFormFucker.addFormEvent(Sender: TObject; Form: TCustomForm);
begin
//fuuuuucking time
if (form<>nil) and (overridefont<>nil) then
begin
if (form is TsynCompletionForm)=false then //dus nut wurk with this
form.Font:=overridefont;
end;
end;
var
i: integer;
ff: TFormFucker;
r: TRegistry;
path: string;
noautorun: boolean;
begin
Application.Title:='Cheat Engine 7.2';
{$ifdef darwin}
macPortFixRegPath;
{$endif}
outputdebugstring('start');
Application.Initialize;
registerDarkModeHintHandler;
overridefont:=nil;
noautorun:=false;
getcedir;
doTranslation;
//first check if this is a trainer.
istrainer:=false;
for i:=1 to Paramcount do
begin
if pos('.CETRAINER', uppercase(ParamStr(i)))>0 then
begin
istrainer:=true; //a trainer could give some extra parameters like dpiaware , but that is fine
if pos('CET_TRAINER.CETRAINER', uppercase(ParamStr(i)))>0 then
isExeTrainer:=true;
break;
end;
end;
if not istrainer then
begin
//check the user preferences
{$ifdef darwin}
macPortFixRegPath;
{$endif}
r := TRegistry.Create;
r.RootKey := HKEY_CURRENT_USER;
if r.OpenKey('\Software\Cheat Engine',false) then
begin
if r.ValueExists('Override Default Font') then
begin
if r.ReadBool('Override Default Font') then
begin
if r.OpenKey('Font', false) then
begin
overridefont:=TFont.create;
LoadFontFromRegistry(overridefont,r);
ff:=TFormFucker.Create;
screen.AddHandlerFormAdded(@ff.addFormEvent);
end;
end;
end;
end;
end;
for i:=1 to Paramcount do
begin
if Copy(uppercase(ParamStr(i)),1,9)='FONTSIZE=' then
begin
try
if overridefont=nil then
overridefont:=TFont.create;
overridefont.size:=strtoint(copy(ParamStr(i), 10, length(ParamStr(i))));
ff:=TFormFucker.Create;
screen.AddHandlerFormAdded(@ff.addFormEvent);
except
end;
end;
if uppercase(ParamStr(i))='NOAUTORUN' then //don't load any extentions yet
noautorun:=true;
end;
symhandlerInitialize;
Application.ShowMainForm:=false;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TMemoryBrowser, MemoryBrowser);
Application.CreateForm(TformSettings, formSettings);
Application.CreateForm(TAdvancedOptions, AdvancedOptions);
Application.CreateForm(TComments, Comments);
Application.CreateForm(TTypeForm, TypeForm);
{$ifdef darwin}
Application.CreateForm(TfrmMacUmm, frmMacUmm);
{$endif}
initcetitle;
{$ifdef darwin}
macPortFixRegPath;
{$endif}
InitializeLuaScripts(noautorun);
handleparameters;
OutputDebugString('Starting CE');
Application.Run;
end.
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/phy0292/cheat-engine.git
git@gitee.com:phy0292/cheat-engine.git
phy0292
cheat-engine
cheat-engine
master

搜索帮助