From 76f278bdd6574eba64b0bec9c7234a6c200b4746 Mon Sep 17 00:00:00 2001 From: Alexey Date: Tue, 19 Nov 2024 04:07:35 +0300 Subject: [PATCH] [CKPE] ckpe_loader can set no steam patched and set floating start address; Remove NoSteamPatcher; --- .../Patches/SF/LoadMaterialsQSplash.cpp | 4 - .../Version/build_version.txt | Bin 12 -> 12 bytes .../Version/resource_version2.h | Bin 2004 -> 2004 bytes .../ckpe_loader.aps | Bin 72012 -> 72012 bytes .../ckpe_loader.cpp | 119 ++++++++++++++ .../ckpe_loader.rc | 8 +- NoSteam Patcher/app.ico | Bin 14057 -> 0 bytes NoSteam Patcher/main.lfm | 100 ------------ NoSteam Patcher/main.pas | 135 ---------------- NoSteam Patcher/patcher.ico | Bin 14057 -> 0 bytes NoSteam Patcher/patcher.lpi | 78 --------- NoSteam Patcher/patcher.lpr | 26 --- NoSteam Patcher/patcher.lps | 150 ------------------ NoSteam Patcher/patcher.res | Bin 15959 -> 0 bytes README.md | 5 +- 15 files changed, 124 insertions(+), 501 deletions(-) delete mode 100644 NoSteam Patcher/app.ico delete mode 100644 NoSteam Patcher/main.lfm delete mode 100644 NoSteam Patcher/main.pas delete mode 100644 NoSteam Patcher/patcher.ico delete mode 100644 NoSteam Patcher/patcher.lpi delete mode 100644 NoSteam Patcher/patcher.lpr delete mode 100644 NoSteam Patcher/patcher.lps delete mode 100644 NoSteam Patcher/patcher.res diff --git a/Creation Kit Platform Extended Core/Patches/SF/LoadMaterialsQSplash.cpp b/Creation Kit Platform Extended Core/Patches/SF/LoadMaterialsQSplash.cpp index d64122e6..c689c9dc 100644 --- a/Creation Kit Platform Extended Core/Patches/SF/LoadMaterialsQSplash.cpp +++ b/Creation Kit Platform Extended Core/Patches/SF/LoadMaterialsQSplash.cpp @@ -15,10 +15,6 @@ namespace CreationKitPlatformExtended HANDLE g_LoadMaterialsQSplashPatch_wait = NULL; uintptr_t pointer_LoadMaterialsQSplashPatch_sub0 = 0; -#ifdef _CKPE_WITH_QT5 - QSplashScreen* g_LoadMaterialsQSplashPatch_logoWin = nullptr; - QWidget* g_LoadMaterialsQSplashPatch_mainWin = nullptr; -#endif // !_CKPE_WITH_QT5 LoadMaterialsQSplashPatch::LoadMaterialsQSplashPatch() : Module(GlobalEnginePtr) {} diff --git a/Creation Kit Platform Extended Core/Version/build_version.txt b/Creation Kit Platform Extended Core/Version/build_version.txt index 26b8d8c1fa8084b2d6c649202702a0b0074814e4..570f88ba82644c15cae9c19091170e77c9dd9ed8 100644 GIT binary patch literal 12 RcmezW&w{}a2zeQ}7yuj)0zZ1_K6O2Cm7B%+ix1Sfw`0uyu21^EB2Cm7B%+ix1Sfw`0ug8%>k delta 42 scmX@JiRH{DmJI^joXiXmz`R+K+nABjc(X6hWFXc2kazn-UdC*00O4T@e*gdg diff --git a/Creation Kit Platform Extended Loader/ckpe_loader.cpp b/Creation Kit Platform Extended Loader/ckpe_loader.cpp index e554d371..412e5eb2 100644 --- a/Creation Kit Platform Extended Loader/ckpe_loader.cpp +++ b/Creation Kit Platform Extended Loader/ckpe_loader.cpp @@ -2,6 +2,7 @@ #pragma warning (disable : 6335) #include +#include #include #include #include @@ -31,6 +32,8 @@ std::map dllENBs = { { L"dinput8.dll", FALSE }, }; +static constexpr const char steamapi_dllname[] = "steam_api64"; + void RestoreFiles(const std::wstring& AppPath); #if DEBUGLOG @@ -242,6 +245,109 @@ void SetAddressOfBaseFixed(const std::wstring& AppPath) fwrite(&ntHeaders, sizeof(IMAGE_NT_HEADERS), 1, Stream); fclose(Stream); + + MessageBoxW(0, CREATIONKIT" Patched. Close.", L"Info", MB_OK | MB_ICONINFORMATION); +} + +void SetAddressOfBaseFloating(const std::wstring& AppPath) +{ + if (!FileExists(AppPath + CREATIONKIT)) + return; + + FILE* Stream = nullptr; + _wfopen_s(&Stream, (AppPath + CREATIONKIT).c_str(), L"rb+"); + if (!Stream) + return; + + IMAGE_DOS_HEADER DosHeader = { 0 }; + fread(&DosHeader, sizeof(IMAGE_DOS_HEADER), 1, Stream); + fseek(Stream, DosHeader.e_lfanew, SEEK_SET); + + IMAGE_NT_HEADERS ntHeaders = { 0 }; + fread(&ntHeaders, sizeof(IMAGE_NT_HEADERS), 1, Stream); + ntHeaders.FileHeader.Characteristics = + IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_LARGE_ADDRESS_AWARE; + fseek(Stream, DosHeader.e_lfanew, SEEK_SET); + fwrite(&ntHeaders, sizeof(IMAGE_NT_HEADERS), 1, Stream); + + fclose(Stream); + + MessageBoxW(0, CREATIONKIT" Patched. Close.", L"Info", MB_OK | MB_ICONINFORMATION); +} + +void SetRedirectSteamAPI(const std::wstring& AppPath) +{ + if (!FileExists(AppPath + CREATIONKIT)) + return; + + // Algorithm is imperfect, and there may be exceptional situations + + FILE* Stream = nullptr; + _wfopen_s(&Stream, (AppPath + CREATIONKIT).c_str(), L"rb+"); + if (!Stream) + return; + + std::string Pattern = steamapi_dllname; + std::string PatternWinhttp = "winhttp"; + std::string PatternDll = ".dll"; + + auto Buffer = std::make_unique(2048); + size_t Total = 0; + while (!feof(Stream)) + { + auto ReadBytes = fread(Buffer.get(), 1, 2048, Stream); + if (!ReadBytes) break; + + auto Start = Buffer.get(); + auto End = Start + ReadBytes; + while (true) + { + auto Result = std::search(Start, End, Pattern.begin(), Pattern.end()); + if (Result >= End) + break; + + if (*(Result + Pattern.size()) == '\x00') + { + auto SafePos = ftell(Stream); + auto Pos = ((size_t)(Result - Buffer.get())) + Total; + fseek(Stream, (long)Pos, SEEK_SET); + fwrite(PatternWinhttp.c_str(), PatternWinhttp.size(), 1, Stream); + + char ch = 0; + for(int i = 0; i < (int)(Pattern.size() - PatternWinhttp.size()); i++) + fwrite(&ch, 1, 1, Stream); + + fseek(Stream, SafePos, SEEK_SET); + } + else if (*(Result + Pattern.size()) == '.') + { + auto SafePos = ftell(Stream); + auto Pos = ((size_t)(Result - Buffer.get())) + Total; + fseek(Stream, (long)Pos, SEEK_SET); + fwrite(PatternWinhttp.c_str(), PatternWinhttp.size(), 1, Stream); + fwrite(PatternDll.c_str(), PatternDll.size(), 1, Stream); + + char ch = 0; + for (int i = 0; i < (int)(Pattern.size() - PatternWinhttp.size()); i++) + fwrite(&ch, 1, 1, Stream); + + fseek(Stream, SafePos, SEEK_SET); + } + else + { + MessageBoxA(0, "An unexpected find pattern. Close.", "Warning", MB_OK | MB_ICONWARNING); + return; + } + + Start = Result + Pattern.size(); + } + + Total += ReadBytes; + } + + fclose(Stream); + + MessageBoxW(0, CREATIONKIT" Patched. Close.", L"Info", MB_OK | MB_ICONINFORMATION); } int main(int argc, char* argv[]) @@ -263,7 +369,20 @@ int main(int argc, char* argv[]) if ((argc > 2) && !_stricmp(argv[1], "-c")) { if (!_stricmp(argv[2], "address_of_base_fixed")) + { SetAddressOfBaseFixed(AppPath); + return 0; + } + else if (!_stricmp(argv[2], "address_of_base_floating")) + { + SetAddressOfBaseFloating(AppPath); + return 0; + } + else if (!_stricmp(argv[2], "redirect_steam_api")) + { + SetRedirectSteamAPI(AppPath); + return 0; + } } RenameFiles(AppPath); diff --git a/Creation Kit Platform Extended Loader/ckpe_loader.rc b/Creation Kit Platform Extended Loader/ckpe_loader.rc index 45296397..be7e3241 100644 --- a/Creation Kit Platform Extended Loader/ckpe_loader.rc +++ b/Creation Kit Platform Extended Loader/ckpe_loader.rc @@ -97,8 +97,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,3,0,0 - PRODUCTVERSION 0,3,0,0 + FILEVERSION 0,4,0,0 + PRODUCTVERSION 0,4,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -115,12 +115,12 @@ BEGIN BEGIN VALUE "CompanyName", "aka perchik71" VALUE "FileDescription", "Creation Kit Platform Extended Loader" - VALUE "FileVersion", "0.3.0.0" + VALUE "FileVersion", "0.4.0.0" VALUE "InternalName", "ckpe_loader" VALUE "LegalCopyright", "Copyright (C) aka perchik71 2023-2024" VALUE "OriginalFilename", "ckpe_loader.exe" VALUE "ProductName", "Creation Kit Platform Extended Project" - VALUE "ProductVersion", "0.3.0.0" + VALUE "ProductVersion", "0.4.0.0" END END BLOCK "VarFileInfo" diff --git a/NoSteam Patcher/app.ico b/NoSteam Patcher/app.ico deleted file mode 100644 index 6c88ed2f40d8424627fa0f65c2cd89a332de479a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14057 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 diff --git a/NoSteam Patcher/main.lfm b/NoSteam Patcher/main.lfm deleted file mode 100644 index 61675812..00000000 --- a/NoSteam Patcher/main.lfm +++ /dev/null @@ -1,100 +0,0 @@ -object FormPatcher: TFormPatcher - Left = 1062 - Height = 142 - Top = 920 - Width = 422 - Align = alCustom - BorderIcons = [biSystemMenu] - BorderStyle = bsSingle - Caption = 'NoSteam patcher for CK by perchik71' - ClientHeight = 142 - ClientWidth = 422 - Color = 2827556 - Font.Color = 15658734 - Font.Height = -16 - OnCreate = FormCreate - Position = poDefaultPosOnly - LCLVersion = '2.2.6.0' - object Panel1: TPanel - Left = 4 - Height = 31 - Top = 71 - Width = 414 - Align = alTop - AutoSize = True - BorderSpacing.Around = 4 - BevelOuter = bvNone - ClientHeight = 31 - ClientWidth = 414 - Font.Color = 15658734 - Font.Height = -16 - ParentFont = False - TabOrder = 0 - object Edit1: TEdit - Left = 35 - Height = 31 - Top = 0 - Width = 340 - Align = alClient - BorderSpacing.Left = 4 - BorderSpacing.Right = 4 - Color = 2564897 - TabOrder = 0 - end - object Label2: TLabel - Left = 0 - Height = 31 - Top = 0 - Width = 31 - Align = alLeft - Caption = 'File: ' - Layout = tlCenter - ParentColor = False - end - object Button1: TButton - Left = 379 - Height = 31 - Top = 0 - Width = 35 - Align = alRight - AutoSize = True - Caption = '...' - OnClick = Button1Click - TabOrder = 1 - end - end - object Label1: TLabel - Left = 4 - Height = 63 - Top = 4 - Width = 414 - Align = alTop - BorderSpacing.Around = 4 - Caption = 'ATTENTION: Does not remove Steam DRM, only translate functions to winhttp.dll. To remove Steam DRM, use Steamless.' - Font.Color = 16119027 - Font.Height = -16 - ParentColor = False - ParentFont = False - WordWrap = True - end - object Button2: TButton - Left = 4 - Height = 31 - Top = 106 - Width = 414 - Align = alTop - AutoSize = True - BorderSpacing.Around = 4 - Caption = 'GO!' - OnClick = Button2Click - TabOrder = 1 - end - object OpenDialog1: TOpenDialog - Title = 'Open CreationKit.exe' - DefaultExt = '.exe' - Filter = 'Executable file (*.exe)|*.exe' - Options = [ofNoChangeDir, ofFileMustExist, ofNoTestFileCreate, ofNoDereferenceLinks, ofEnableSizing, ofDontAddToRecent, ofViewDetail] - Left = 344 - Top = 72 - end -end diff --git a/NoSteam Patcher/main.pas b/NoSteam Patcher/main.pas deleted file mode 100644 index 12cd1a20..00000000 --- a/NoSteam Patcher/main.pas +++ /dev/null @@ -1,135 +0,0 @@ -unit main; - -{$mode objfpc}{$H+} - -interface - -uses - Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; - -type - - { TFormPatcher } - - TFormPatcher = class(TForm) - Button1: TButton; - Button2: TButton; - Edit1: TEdit; - Label1: TLabel; - Label2: TLabel; - OpenDialog1: TOpenDialog; - Panel1: TPanel; - procedure Button1Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure FormCreate(Sender: TObject); - private - FFileSelected: String; - end; - -var - FormPatcher: TFormPatcher; - -implementation - -const - AppDef: String = 'CreationKit.exe'; - SearchSt: String = 'steam_api64.dll'; - NeedSt: String = 'winhttp.dll'; - -{$R *.lfm} - -{ TFormPatcher } - -procedure TFormPatcher.FormCreate(Sender: TObject); -begin - if FileExists(AppDef) then - begin - Edit1.Text := AppDef; - FFileSelected := ExtractFilePath(Application.ExeName) + AppDef; - end; -end; - -procedure TFormPatcher.Button1Click(Sender: TObject); -begin - OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName); - if OpenDialog1.Execute then - begin - Edit1.Text := ExtractFileName(OpenDialog1.FileName); - FFileSelected := OpenDialog1.FileName; - end; -end; - -procedure TFormPatcher.Button2Click(Sender: TObject); -type - PByte = ^Byte; -var - FileStream: TFileStream; - MemoryStream: TMemoryStream; - IPos, S, SearchPos: Int64; - Pt: PByte; - Pss: PAnsiChar; - ul: Integer; -begin - if not FileExists(FFileSelected) then - begin - MessageDlg('Error', - Format('I can''t find the file "%s"', [FFileSelected]), - mtError, [mbOk], 0); - Exit; - end; - try - try - FileStream := TFileStream.Create(FFileSelected, - fmOpenRead or fmShareDenyWrite); - MemoryStream := TMemoryStream.Create; - MemoryStream.CopyFrom(FileStream, 0); - S := MemoryStream.Size - 1; - if Assigned(FileStream) then - FreeAndNil(FileStream); - - Pt := PByte(MemoryStream.Memory); - Pss := PAnsiChar(SearchSt); - ul := Length(SearchSt); - SearchPos := 0; - for IPos := 0 to S do - begin - if CompareMem(@Pt[IPos], Pss, ul) then - begin - SearchPos := IPos; - Break; - end; - end; - - if SearchPos <> 0 then - begin - ul := Length(NeedSt); - Pss := PAnsiChar(NeedSt); - Move(Pss[0], Pt[IPos], ul); - Pt[IPos + ul] := 0; - Pt[IPos + ul + 1] := 0; - Pt[IPos + ul + 2] := 0; - Pt[IPos + ul + 3] := 0; - - FileStream := TFileStream.Create( - ChangeFileExt(FFileSelected, '') + '_patched.exe', - fmCreate); - FileStream.CopyFrom(MemoryStream, 0); - - ShowMessage('Patched.'); - end - else - ShowMessage('The signature could not be found.'); - finally - if Assigned(MemoryStream) then - MemoryStream.Free; - if Assigned(FileStream) then - FileStream.Free; - end; - except - on E: Exception do - MessageDlg('Error', E.Message, mtError, [mbOk], 0); - end; -end; - -end. - diff --git a/NoSteam Patcher/patcher.ico b/NoSteam Patcher/patcher.ico deleted file mode 100644 index 6c88ed2f40d8424627fa0f65c2cd89a332de479a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14057 zcmY+r2UJsC6E=Dh5=y8E9Rxxz(xr+>=v_d%fFLSeih}S;3r&I`MG%lKy-M#b2v|_0 zNpArGX+r27Zusv1ue)xtvT~A~*)y}}*)y|eb^riGcwRq101_CH0RRTVb(G;fO-dLG zjBrV*t)+JV`q%3hDKX*A`gyU#^(T+#_e?+oxxQ%tAoEsRP1(e6>R%>_w~0FASLd~G zgbG3jB^X3Q%BE8JkrxC}Nz6rN0&pV~=snkHC=3Lmrzch1FAUumLJmVfYl^>l@-I3S zT0OjMWWR59G`4!k9%b$+;Nb7#+s@JzZuxF4ed~%_XOAnUuKoP}n*kkXAMM8;)}GcL zI|@|#cZ z3BJGgyap{B@wZ3Xo?9Z>N#~fh*^>BN&Uo5-f4uv_1%!}aOWFK4o^wU3$|yqauEx^BypPkA=_O2&b?Zl$xU6#l@q_h zQiX(hU(xW!Jd@w;j%(NOucn?$w$QR($!Qd_uUMj9yj61e5$Om$pKz^XbY63^udE{( z0J)q=hh^U1G3G6C2vx_%nG((GKB!@J$2EtD9TuGFjQX|t{IwVflhdApT0+iKS&uvJpRBW!2zEY= z;m*IP^}gGcO<*Bd5@g`)B^X8Ytz;b*{8~()D7`_neZNME6gWh z5Y^?(uwZ@f@CQGtcbi>`C61xRV?V!heap%VVqPdCsR+|ZL5zY|D% zBp55+_7B4`{qu-%$1?CKp5+wY7c5R*U-*;P{%7ITl62}AqrY4z?R?!vdcHa^bc;d!Ekq%ROy1w9+%6Vl58pIV>9^;`WHpL zR_0XQS}q{0?n=_>K8;zp)mhE7xX0iBUY;$`y0!29&K+n!dB}At_K@Ug&g14zJ6*5C zdrR;bWssNZ)*~uwUML=Pu5qvH@D`)p+MWQVTq>|xAD=GB5bVNJKom(Ua@IzYMbw@0 zDa^IURYw~~W0b<16M&D7NT%xfulHe)^X1>WPwvc+=xXgL8|Xyc>h7j{7(li5XWg&_ zXvl1^2B?h%Qw4Gk@7&66A6OzoCO|yDeI966B4g43dpa|djmykxgSp=yXJv7v)k2cU zFYny<8W2$r%>vt;&z=1%5sI-P6QjQK*#_!G+x19o|U)WSe>%Yjw2<>0> ziB7#iyco~zX`{%wVw7{Fd=uOZR#&oubqda79na12L5{cYL>id9r?3Ec&}KZqQ(jLa zma6A9kR@nm6PjCROQ+NQ$$*jzpH2XKw9d`L+{>+KC$Dvh2iXQHJq1#A?XZz1@NY#w zqAn|gkN1-^#?G7Hqz7q69DFs5UAn*C`b^;VO*3vt@ zVmkIjLhN`pKbn){`+v=fk^1QQ@aE#CeRHYXer%5z-$^SAJ8>UR-{BH1%KH_vQQUOG z6WVzGi2WT?&vw|@)$3uU^BABHrRI?H!_WeF$$+jwG>NhCJ%37;%6QH`oVjBlqJPj^ z8ASW{V_zDPQ_${5KELS)H260#EQTg@?N3`x0QH-I7RVfT(WEt47~lpQnt|gAj7!*s zK_g+o-~_uha*_KNyGrNbgY$o`nEzdw5vxP(kfAlYz8~>l$*(N=?LZR-K%Wk(?Z=<| z@?_q4^(m#XVH_jfhh56`f2X>%#X7_trqCSzP#9}$-cp;-x1(Pa=~`%Ld=!xM9&23U zG8n-dzY{vI6+ImEDyrS-H(l9De}R$h8n!VC*cWJh!XNNuzyUO2MPP#a_&YwCk@&6K zfx2ZKPE*Wtu945RVdwKNrA8P0^nHMfm8O-rBeCQE+>V;j9=tj20cW8*X>%Sj%ceW; z`f-FjucV7MJ21ToXoHo#G;v2eU6Q+WqfB63poxoI)4?JTye+fss->$M3 zgTKyH$g)!pR^ki&Ose} z0Hyh+M*HZQ(TiF5TS#a_rjZ%(esy0^BYhT||BqyV9K{I|;18M4EUZuM%FQnCxL8E% z9Z+@(%A9U!?8^!i7tKP)l*T%=99IjPj&C$QiFtAwOjaVNw4j<%#vcBnUWl2K$x%h< zk5*pG1Uvk7Gg0o~(TInkV?W4b;w1}xW5#^}a=DPt9tN*769yeO5Awf z$khQ9_m27#(hE;xuXcOa?lyOE-19Cn3fdyVfuVvXFdUsldOv!(cm0=*p~q;@31T7uarxN6r3lo*IG{&BL^;7b@*r7ah!v86{m^;M zmRzfs+ykMH@2b~6_I+A#WxuqozIV}07Ju}OFcxIxfJ0>@ z0gCH^2+-xJO2xk{y8zqD-}r&-NB@0#Y@XL-R`cCK_6GW^I9q=oRa_`*Tt zAUY^a(f5J4t>&1~@8#;nfE4zB0to{r2pU;x%9ofD^c*8|sTQlpPAJt_|JBITf=g9_ zgU$r-NgM)9bKJU6gdZcd^q<%*K~LCQzaX7cjJz}l_;d)1nF#bP1#7FOZ%U35JHE(w zeMi@dRo&l6xpl<|wqT-u%3c6LS)u|af&F8bsB&Rc9qSRZefZ~id%M?%6-u2>g=bY zXgwY*xT+dh(#ECzR#jC5i_0xHKA4P^=D_;*(EXnMZ*GwdNVufVKe-Asp@(7T={p-- zV&j`s87he|nP@JKp!fBFWIRBQr2@zEhe)g4HPyoA;55Az^zWMh`_JDfocBmSd=5b# zUUHP00B32k%9+w6Pswst!xoI3cZI1IF#D;m{IWI|U^v*~Khr}`f(H`;$LrAc6rq(UI#@j)n$z`p-lrahGKbI| zSp-g_wRvH7J^7Yte?H4FqIp1#4~KZraRl!}Mg{;#eJAx;=nn*N(XNuvUj1)^a*rJZ{C~a2h+n*kq;+cE-{f~C3vf%1e|V>t&-&wc^h_dLUOFgk9Y6lh5KW{ zIk--XiaRX>vFZ^OMWYEICx~YT6qkyivD)^SPy=3dZR>8}owhSXheJO+`PCJqX)ZvX%z;~E9Ec#=d!{>JD$b2 zIIj79Vn=S&Ehs28Mu~&p#z6$dCN8AdjH3Vi76C?ht1N}S zHpW8sA%o+?(S(gEkO}EowBrff1dWGOH`cR-D)9^cY$>`h&9*#R8*g<^rE4X7Jf9xp z^|**>`NGQ>u6Ux`cG(+8YO`CrQWf`(E#y5N8hbPM=I6O|%w_g3<#_`KSHHv{rI)+j zZvVLo1jVwy6J&i&(KE~$R?XvrnG`PUWYi2+DjP_ETSZc9xG`iu7L-uB&0=#mD?(=E zZ_dBENtUVp)G%D}&^lGn2roX|$%7umRDQl)rH!9P0k1_qcNZvtC6}Myc42Fa+MWL8 z1oM+rrQJ7cxuK>FB7NStim~ojXhV`*_%1&<*s%eb3m^T8cxqW?&G+L;{OH$*3z@Vp z0`_t}^Td~OgU#JfkJi48NDfOt?9w1T${*X_=%NgOgq~ZDv}jcuN(WvL)4L)cN0YJ< z(&zxi>RhBYHpJ3s5c&eV+uiBRs&k~Ea1Wa<783bp9J&haWUTIU=o$dqfvN!E1nhnF zZQ4Ovl(GELX*KX$3}B49qb3SV67pgB)2fnX@em9B;Ur`y4ST@2b1=XMqH`Z3Zq|1D zZ*{)#tnv0o$d+z(X)$1pIgz0ZVnB~V@mv#DF2UKIK0I&2ebv5Ws02m|iMY~bdRl7k zPM8UCB+LuB(bMhp$Z*KI-F(82Q6UK3p@ve4d zPOVK_N^LWqYFp_$Wj1u$ms?sed=(2B&xh%d6R!$2<&5C(jQ)Le-S2WFQ>_aSEx$|R zcJ)8UcdAD+GKYrgqP*dk*_*$3o;gaE=OG^$OiZ`^5|DzCM^#~_e(kq>&h z_mLBefAHWnv-nIOW?(3%sliDngs;r<&nI3S2jb0g?>ui{RpHDJCX-ug+(bua2`tQV z#gO|^A8R0XhKH@=D+Dtb>H+q31DYZ8ZK|xoukuP9ybU-UcqaaJ8Rm9~5Hf70RaY&+ z^^)&2cT23{(yaC2B!RYUT-?W%kcRI<6vMPAtL7B{8eo$fn9Yz0*Eru6#BWoVRK(_( z7XTEs5Nd0Yg)nBG&?{+5-x%r8U|r3T4!BN9;wra@q8CFZBAM|RzxX#1u;y3PbVLlWFOL=2(E^CCIt8 z)Z08%RB zzKr~Uo&L^)o?|DPA6SrIr>%t|g|5b?M2;)`ZZvTRmdi^`+3Hp+D*^f(fO)@QSNGeE zkK0A_57dE0lWf)tT&vpaGKFPdJJ4z<hGbF2fQR*+zX`GDzJ|ml^ zhg>4y-3~GzF3wJJ--ty`y++F3Yzvq8Q7@W?Fc4{rWBBY0_#QT3#$cCkmTd; z%Df0w(2!mJ+-cZ^q!$2nr;H|2^3l@2vu4AbGM&_0eY>}+@(st!q`j`Ol)XpBWFBRE zQI!h0clPXxQx2Fk+En%MFT4JpSmPgq%x@g}bSolM(_*q8xfmG)5SDjazPiPG7>>(` z?}so-y6noViRsCy&9hdqgBgmY*Eiq);0hRWu(ZVfl)sgLc-GaHt>F(pmgWBO2PGZs zM)5QHeZ)+a-iuv>$TEE<^^nOfMOm&2J`F1X2!M%B6TB5lHQR(rRVGUsdbo z1$o^t`rEG91Y8?6!wf@t>@!9X{moDZTK2C#zwmiT)l#P^R$Bz3k8(+meY_l#;6M`m zz(n6VRv`Lq(yM4}qi-#hKMZR~yf}We>MCzK(Vts_RTwQR`;P_By5R8!n3}BnmqH1_ zulPXSAvN!ShDI{Yejm-BQ*fHR;K~A5&)_GwU@jxjc*!Q>d$NL2(rHGvY_qR^a{&Yg z#iTch6-}cm`0xRmA+Q`btk3YkcR`K~`TTa>9T6Ck!Z^Jz)Tv$28 z5X&cfIUz^1s>zHEeD45shS#f9)JN(wpapn?e3s2-Zj2JDe3&|0eeTXQXig$lybtn= z;ic?N@(I(1ro!oXog(lwCg2K=o?GS6oAH(bVY=@I^OqR{L7yxp3s_6tZa>mE4Tg=Z z1ih|X;N+`3R9by#R6ASPfHSWJyb;IZmE?;T`d1(B3TIJQY)Biq-b!Fq>-`DAr|Ew> zuc-!Z56)j4l$=74pGdF#mgEwBK|LM8-(KfUNLN>WKf82Rby@W6=PIQLswYPcMoi%T zxR`kj{_LY4y$#jkxqan$JzdU(8Hgb4Rpw=P>azRSff=u&0Oak!_6H-ku)l{o`}?vz zH)fLy3$CP2=hscxy+G_1zra;;%ELF<{s0Z9o!Tftdx#yy}V6CFJ; zYD!wy@`BN1-t*_u&F;{KtS<`lL1Fo;ulU5yquPU{-Hzl-0q=4#r&kP~x2k|rS@)8$ zS@cyhR2M9uZv9*Xw8}%HYKeN@0)x=xDAFHKWmqI?2HOyeZ%0QFgz0u&aLyJg%{)_h z2dFWK_fA8j__8>)@=I)vrVgb3eK8e4D`C)#;6dFh?tF6MOf$gd6L>m%$`VN8;!76B zeBTbT8%waW*%>%>?$)P6k$$T4hn5A*ng+VYag(9~o?R&J;XIT^d?9mXX8IN2CWGHW z5|o3qSOHUL=lfI8en(+D)ty;(Fy2@7v+i9CvmAx=7>Bg$wyi(@FHLN~#K;m9OM4Jq zcKgCNUl1j0UsU1);yFouvn*ZFOAzi!Zrn#;cVc;kL%|1vm=4`wcb!I0ssTy6(J6}$ zJe~EJq(P(OR}L@508aE5*Q15=vw!*z0J^=au+a-k0OkO4)w3bV$v)WKEl8+T*Q^(X z1lbFq!7}ZKR!~Kdx>XgKFPex9ntmI1ATp$(sB6t@93u8t6}hSeN1kQ-my0o3rm4>{Uw z3s&w5or}7=g-OSrlT4M{eKr0^_o!1si{UIge{tME>FYqn1KeNyn8qZba?*4!bLUz1 zC6mHSA+C<;@KV;e^m?458>nhI&DLu=Nd&u4A1{@|5+r1d8YM@^@}VbBtmEx-fuL8s zG#&lZWu`zdoc91aXxO5KoF>IiWCG6$azB3id91*ue`KxEUmt1Y`VXFm=~m>z^%hq& zv!WcvIWmC$lt8`72Z+JM$1^bA#$s%% z8|llLB;PNmazE*PRI07jlc*=h-GB=~Xmn<-S#9#7cR1|+Hx}~0T!bgRDf-S;G_)zf2FScK?O`I??z0^0Ihnqb!Sr_bjVkluGr&FJ8^X5cpWcz>>Z%m52l$7AucN;uVRDHh(d$L%do8D z=q}m1f-a3_^%*VAZ2ia~pI?&R(U$H>qA$#ywk}+2HqG@-bMBD}1Ao91EVmf_1)L7= zyr4QvfOOnBCLzQ5NRy-R)ifx*mvpEmZ!3H&-S2AZ`Xl1GTqA+Irv7pQs#!(Ipr52Y zDMB&FHR>_Dxc6L5R-!a1rODj}@JFeqhZc1w?jzBvio(EOMyz=(C;CJMsGigZ?0Yy= zxGxI%r_i!za(GM#+9RvnJgis3F4#Pu@t~*IWqD_^%6G`Kmp!@$#6YNfz=Yx8iL_Y= zzUvwD1xVx>>Eib5I{Sx&Lf|KPHYaz!Yx7!!NUH!Owb4M&H>Ir5tCw%uAA~yBh7#$s z=8jTN|LlWg97rL_v7g-N!E)(rgm`prAF^Hf*To689(%y1ko$5*xz-&bX$2JQxgJiY zoHdmY?;P~#oLyBfzVhTm%L@Yv)i)!BSVJt70sAhGKeX@bp!^`7_X21_4ws$*O}&Z! z4I1?m5BS!q3yL%Tk4mFCOSPUYq?s<2upX;qQo@15y+_Eu3KTsA^QB@fInlPqa#ee5 zBo2fXr-#d-!ScD2E(TC4Uo$j51C=i(+x;3x#1N>(LndyNwlgKAht^z+#-~AQhiHWQ zb~NCwJq4K_9L%K0v)haOHXG)<#R36Wg{=pw% zHhweDAFjn!KQ3~)cSXjDfhiNzLQ%d&VcwmBX%s-LH6za0*!>;884wkZ6ZJ`c`U@6( z1qek5Rf$0#7XQ8>6o#7Etzo+U`zl41<{yWX6B+d3*T#WPD$@-zqH&3vNC1AWSm~^J z=IAW5PJ)buk~IDK|H9{&3xfQIPwpmsH3Tk98fly&Vo~jt&c^57{@#$?|6kitoy-1ITDMKWKLX2Te zk9_`$7I!RIB#(z)LmZX@__NZYPZ_}UZA?#O-d;KjwKA{XJ3)D$zN*)@yoO8;&B*2Z zOIFexg@h$HU!pgQS+?1w+wR!9+=s`6?5~3*25NWn9cEmT7JG%c`HK&z{&(bC0}~@T zc+uM@I&1iJgzVb6G0YIQ?A(ANnIC*3lMo)AE`ya!33X)OUa?0NhOYk>gc~8(5e+(V zk_&vp5B&ho`SO76GBIF zId7XDRgftgRgJv?YG(t-ihbTkeEI6rGirz7T~z6B+ChGP+~0Q+bjROAPVl(*xpIT$ zoP4pTq;HeAhar;JkSQI#(t{X=$}N{a>*_8r!!1?~PE7Bs=9SwS-Jv-XC(>f5roLb8 z*=7H8LxE|JSnVR^(uk1E(%s6_{Bz+oGAQD}OxQUg&pNJM5*92$9eS3%!*5(yBk#Gw{9%5P!;bfp>RE$V?B=v zK)p_=SkZp7`|R|2NZ;3kO!L+KyAS84M$v`Uy~|0!&2EBx=U$*LK15VL7fxVnCNd zt8~myiZB2L4~@nh`~SJ!QaZHL8GVTpo|P1ttsh4=T}88M+l#WK1CI{Vfiu51(P*iZ za3Qa?k8$k`q+>*fKwi;A{XzmZgPOx%**$HnsP6m|#h)nJjVb=CJpI{X&^f2yoj;+^ zbT;=ShE<_gfKZQmv-;h3@jxs{ZS`HYk&3-jIXtP6i*LD zhIW26#YOv1ZG7I&ccO+wH9Qhz{wPn88k&?~r1deyJOh90wHzeLum;Kg{;=D2G_0z| zRhA+{f$qfMi$#e>*Q9+(bkE+Sww+k8s*_>vp$5n46ua7ShL* z5X02tUN~zg<`YVS8hvcSDhnYSl!3_Gw8Bn<4l5>IiSFG*=Vl#WjE+ql&oQ~NDC*R^ z@f^0x!py(MeyJC3l6R*Vqhy73;(vKo&%RaaFuR`3+i(LmZNPr%YPUmXw9!$wDtfdp z?`+eeRuWW14|x6l3ay@#ubxpzaf#xkqWkvNd*{W#yE_w>rKB*~;86y!7SF3G9)fT< z{qpDeg*ka1f}X1JD*DRQ($CO^)e8E*AQ=yU4tEQ)LHZx2F~_G=gX13@>>C;hRSqjM zyVg;&OZ|A1fY$(gDm3~b+CRIbNTjKWX#vX?z&#;!q8f86ac2ks3B*7)NO8HnV4A(FVpeRoi4V-q zc8{;PcEv7v15g1f@-#3JPpj2c;%>yDD<8VIL zqs86ShC(tsEy|qNO5`YI(7Dk>{}OagdikM72m@OZ1D3v3^!$SyJyYqDJg9Pk*68tw zmnC>rZL&KALJvb9yGa$Vq>qCCkwm1Jk@KHjjbkApc&>=rdrcm7gXw zKGo!f#;e3|J}! zD*K-ESl2d+JS3J2NMr<}G<(~JS{~9anP~uA2f^9j3SNPjnvI;o5XR{L+l0?1p@|NO zq}>z-U|)XQ|0hv-MPoAUnQ`C$MJyy+W1F`OfBf$Y9Zp(55uHj*w@iVea>cL~7G9~( zcx@GY78osmd*2u>m(Fo$WC$LOs;yxJ=kb3W8%wMi1MRzlpO`}X;Apz@G6i4dcGI)| zEwY?xGP$E5654SPro%J@$uT-cRBQt*ZcG{2+P+~{`tx*Imphvfse%!sY(mFxH(}n~ z?0uQUPUE0qI%k+jq+N2f_n9?W zMtcu2;y>AFB092z!fv}#ecPfax25(x4;%ma1AJ;?^e+_W5iu%=R^=&ta;wO1-pmjB zaChV?8-t3Z3gSi-tDTGTlMBc^hCj&Ejjw05(}O%377Y<#diAfg!OAnvmD!V*?UBNj zTKCh|L8lYnf~NUc1~@+3yR0g>3L^+HtRUK1IdT(^zyodV)c?vf}{# zIB2Vs7MrEw?&q*_w5Gfh;AClgxPB$i)$_>sN_dRu_O~@;lI*LRmlF6lK4PTbWAH!L ziUV=PLW5euV2PXM&vge26N^tT>29o<4|o$weS>8P!%+j4Y7-MTWtElzQ9`Wuji1Luk~u79zNZg{U=%e1|s)QfG;uN7D@X~n$B zuT?S8LnebIuhQ%B&wEt3W^?P&k7#My0t^~jSq&M_>93DV74HywrHF{`+x9luUslKn zW#i&B)HpK70WjpMlwqxkq8Ni z##P|cH@SKvr1Cef(lZ@~24W6?A$6ye3}_ca5&N_?_$4jy_OgJ{E!@1Q!&92cIk%-w zCA8TXqzYfviS#EXN?2ayurjk!XF7f7<9vy5Hx~#umI7zz+SM@>k+&{nWGjf$E*cJW z1G@Jwu86M=5Kw9IV9C%caigKNl?y(doYxtdAvJU~j~KJ2y%n*dghLBgwwt0$+k1z> zp|-+u%N}e|V*b*qr3GN|40cjZ(%fh0;{ba_mF2I=Z+G%jWnYh#LuG%AT<)oLyV0IA zYvss$eII@ZQjYdTp4-3a=dpVMGQ_9Y)^prd{c_2F?6bs4Xbkr(%BFo|L|4GAJ{+(a z0NR8T8AhW*_=bQ1+YJ0h{J&5oA~J8zEsN)dTHX|}*bDjv#&^%SKQVB2zO^8O#-Nx^T=L z9f!E_0kF&GKVA-fQ~I^UsH=sH=fVHm&`;oUB%BD0U&ye{zu*}BCN>qgTrGUe0XMqW zI?GQu6PNsPh`~lq2Z3ifgzE&?-}opQM>%Z++}|<$;330#mCn5uA>rYw-If&eh)tr| z|3#1Hr~^oV={!aE)XuJ-M!uq>2b7%qOz=Qi{ihw~z3I+I^_SBS#sI-9{m zOrglblkuz9SmtQlXtV9>7eU56xY65)N*`GFchCW0vqMCfo3my&B#W%mq5Z;WXtpj` zBH8l~ZonG+sfTniLES1m>8gd6NkO;mvxQhWC^GV?*c7Tw@On#(H zK6KB$3oq6OhR3}M!l^r8R4Nr3B2v=<1o)Lm?Y_WUdAi$)?_h`5&{ipzgp*}&R08Lf z2Q%oM>NdcifAKr3;Z=yu-3Wc?K3!#wwq?4|MXJ2tZS{CoX&b8S*{Nw}R%7pjs&16PR9mcLDq4$QhM!NdWl|K^$yPrMvip9>io?CoY(2822riY&E;aBlA`<+5*!5iS`9n z)6uU~XcTzJwx#06S5VYb)z9Kspv;wzq zyo(RvfiM~k4z+cY%Qp>W|DZ58rs4jy^4PU{S<6G)0T~|OS`e?|NV(YAJ2O7Zr#1z# ziT}%^HW0MqFVSdzeEMnceuS+kRnYQH;thm9eIn2;@MFQva@r%(IJ^ual?>!@$vBo7 z2fj>3J+fy=_=d3C)T{aZlRG|az5#*f(Lfwof@3oMko7x#16>{*WEi&4Pd(6N;PK;M z+LU+pJn_@EkVTor3WrMaDhSh$v%^SFT$wKTvWKqrCJBM`zo+dl{5mQhl3{K^5_-r8 z{KSKGdKKAkoUbRNkr)d-o@xlwhkPw_Z}V~L0IHyaXe7rDgV$SL>^Fh6z-;^i)|X&K z9v0eZ3>|^%m*UP$(owOsWt{KkXHKJAct&0H_t2X?OrPV3=1<0mOA+%Qeg`D+#?NYT znbG=SGH#szvQZY8is$&Y8>Etqdbz+O5r6Zv#$3iQG*xTHj_irmCtBku$+pkgit5Ny z3Mpi=<5YMOFV5`_AA{~%kULcXLkQ!LMoaZEnJ(5@JIU-w0g-iQy%s{TlYE={8CO;{ zB*P`dgMVnm(;%BDo8vLpH!%@9_bY<|P%=6%b97#HpEE!newAwW;eJ}}Bn~u=THq4*Sqtz>KAY0H zbOR~gHaYxBbpvV7;UmGgj~wd%QLs05SNuTp3xirS`sa0H_=MJMv0WhpanIDm_w#PB z4?!sCkj zR9AXgmhc}LBJ-fZ={H~Z%T6aY^>#112fMkhEo4#9;&OP~C z;$o}4mgkgeb^Go6i$hr)rb=HP8ghxjg`W~DX;l;;WU*pn2+WF|0YT6fNb@HnxUJlHpyYS^G_Z~fM(v*Dv z<;-UnxTt*(T5~6T?uUtzd0^(i;Nt~;h3_c-@RX>P9#4DGowB-JkvG;^3R)-6+UPbF z@-I$|)F4K0@V_?wvD8Y!;lbZT-p1Qc8QR|d$@MAsRHG$hF<&a8>E_$2?=tHt{D-)0 zxOvo{;bPH_!YDP5wbwK6hR3raiLy9?k`hC)?*+8z-WSs7W43y<>~BlNS!lR%Qqef( zyU0uY?GVe1WYm0Y%!|l({%Yg=RV8N5F)FObj4K(Fu(H05@X(^X)%#bJ%V*fDe|=*` dGjQMv^p;ZBMVeK;1|U4N)$gf&Qn3sDe*nc>j@tkL diff --git a/NoSteam Patcher/patcher.lpi b/NoSteam Patcher/patcher.lpi deleted file mode 100644 index 88645257..00000000 --- a/NoSteam Patcher/patcher.lpi +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - <Scaled Value="True"/> - <ResourceType Value="res"/> - <UseXPManifest Value="True"/> - <XPManifest> - <DpiAware Value="True"/> - </XPManifest> - <Icon Value="0"/> - </General> - <BuildModes> - <Item Name="Default" Default="True"/> - </BuildModes> - <PublishOptions> - <Version Value="2"/> - <UseFileFilters Value="True"/> - </PublishOptions> - <RunParams> - <FormatVersion Value="2"/> - </RunParams> - <RequiredPackages> - <Item> - <PackageName Value="LCL"/> - </Item> - </RequiredPackages> - <Units> - <Unit> - <Filename Value="patcher.lpr"/> - <IsPartOfProject Value="True"/> - </Unit> - <Unit> - <Filename Value="main.pas"/> - <IsPartOfProject Value="True"/> - <ComponentName Value="FormPatcher"/> - <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> - </Unit> - </Units> - </ProjectOptions> - <CompilerOptions> - <Version Value="11"/> - <PathDelim Value="\"/> - <Target> - <Filename Value="..\x64\patcher"/> - </Target> - <SearchPaths> - <IncludeFiles Value="$(TargetCPU)\$(ProjOutDir);$(ProjOutDir)"/> - <OtherUnitFiles Value="app"/> - <UnitOutputDirectory Value="..\x64\NoSteamPatcher\$(TargetCPU)-$(TargetOS)"/> - </SearchPaths> - <Linking> - <Options> - <Win32> - <GraphicApplication Value="True"/> - </Win32> - </Options> - </Linking> - </CompilerOptions> - <Debugging> - <Exceptions> - <Item> - <Name Value="EAbort"/> - </Item> - <Item> - <Name Value="ECodetoolError"/> - </Item> - <Item> - <Name Value="EFOpenError"/> - </Item> - </Exceptions> - </Debugging> -</CONFIG> diff --git a/NoSteam Patcher/patcher.lpr b/NoSteam Patcher/patcher.lpr deleted file mode 100644 index deba1fb2..00000000 --- a/NoSteam Patcher/patcher.lpr +++ /dev/null @@ -1,26 +0,0 @@ -program patcher; - -{$mode objfpc}{$H+} - -uses - {$IFDEF UNIX} - cthreads, - {$ENDIF} - {$IFDEF HASAMIGA} - athreads, - {$ENDIF} - Interfaces, // this includes the LCL widgetset - Forms, main - { you can add units after this }; - -{$R *.res} - -begin - RequireDerivedFormResource:=True; - Application.Title:='NoSteam patcher for CK'; - Application.Scaled:=True; - Application.Initialize; - Application.CreateForm(TFormPatcher, FormPatcher); - Application.Run; -end. - diff --git a/NoSteam Patcher/patcher.lps b/NoSteam Patcher/patcher.lps deleted file mode 100644 index 52267af9..00000000 --- a/NoSteam Patcher/patcher.lps +++ /dev/null @@ -1,150 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<CONFIG> - <ProjectSession> - <PathDelim Value="\"/> - <Version Value="12"/> - <BuildModes Active="Release"> - <Item Name="Release"> - <CompilerOptions> - <Version Value="11"/> - <PathDelim Value="\"/> - <Target> - <Filename Value="..\x64\patcher"/> - </Target> - <SearchPaths> - <IncludeFiles Value="$(TargetCPU)\$(ProjOutDir);$(ProjOutDir)"/> - <OtherUnitFiles Value="app"/> - <UnitOutputDirectory Value="..\x64\NoSteamPatcher\$(TargetCPU)-$(TargetOS)"/> - </SearchPaths> - <CodeGeneration> - <SmartLinkUnit Value="True"/> - <Optimizations> - <OptimizationLevel Value="3"/> - </Optimizations> - </CodeGeneration> - <Linking> - <Debugging> - <GenerateDebugInfo Value="False"/> - </Debugging> - <LinkSmart Value="True"/> - <Options> - <Win32> - <GraphicApplication Value="True"/> - </Win32> - </Options> - </Linking> - <Other> - <WriteFPCLogo Value="False"/> - </Other> - </CompilerOptions> - </Item> - </BuildModes> - <Units> - <Unit> - <Filename Value="patcher.lpr"/> - <IsPartOfProject Value="True"/> - <EditorIndex Value="-1"/> - <WindowIndex Value="-1"/> - <TopLine Value="-1"/> - <CursorPos X="-1" Y="-1"/> - <UsageCount Value="20"/> - </Unit> - <Unit> - <Filename Value="main.pas"/> - <IsPartOfProject Value="True"/> - <ComponentName Value="FormPatcher"/> - <HasResources Value="True"/> - <ResourceBaseClass Value="Form"/> - <IsVisibleTab Value="True"/> - <TopLine Value="66"/> - <CursorPos X="42" Y="110"/> - <UsageCount Value="20"/> - <Loaded Value="True"/> - <LoadedDesigner Value="True"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\filutilh.inc"/> - <EditorIndex Value="1"/> - <TopLine Value="118"/> - <CursorPos X="3" Y="155"/> - <UsageCount Value="10"/> - <Loaded Value="True"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\sysstrh.inc"/> - <EditorIndex Value="-1"/> - <TopLine Value="51"/> - <CursorPos X="10" Y="82"/> - <UsageCount Value="10"/> - </Unit> - <Unit> - <Filename Value="C:\lazarus\fpc\3.2.2\source\rtl\objpas\sysutils\sysutilh.inc"/> - <EditorIndex Value="-1"/> - <TopLine Value="73"/> - <CursorPos X="10" Y="104"/> - <UsageCount Value="10"/> - </Unit> - </Units> - <JumpHistory HistoryIndex="13"> - <Position> - <Filename Value="main.pas"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="29" Column="25"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="31" Column="25"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="23" Column="28"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="25" Column="31"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="73" Column="77" TopLine="22"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="102" Column="34" TopLine="52"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="88" Column="41" TopLine="54"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="93" Column="42" TopLine="54"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="102" Column="9" TopLine="54"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="108" Column="38" TopLine="69"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="88" Column="19" TopLine="56"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="67" Column="7" TopLine="36"/> - </Position> - <Position> - <Filename Value="main.pas"/> - <Caret Line="88" Column="20" TopLine="60"/> - </Position> - </JumpHistory> - <RunParams> - <FormatVersion Value="2"/> - <Modes ActiveMode=""/> - </RunParams> - </ProjectSession> -</CONFIG> diff --git a/NoSteam Patcher/patcher.res b/NoSteam Patcher/patcher.res deleted file mode 100644 index 72e0ce32904c8d07a95c1f808b5d4798ab5a3ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15959 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 F{|5+j)z1I` diff --git a/README.md b/README.md index e3b124b1..df245e3d 100644 --- a/README.md +++ b/README.md @@ -108,10 +108,7 @@ Marked as <b>deprecated</b>, means that there will be nothing new for these vers > [!NOTE] > You can remove *Steam* from the **Creation Kit**. > You just need to manually replace the string *`steam_api64.dll`* on *`winhttp.dll`* in any **HEX editor**. Since the new string is four bytes shorter, the remaining bytes are set to **`0x00`**. Or compile the **NoSteam Patcher** in **Lazarus** and use it. -> For versions **`1.6.438.0`** and **`1.10.162.0`**, you first need to remove **`Steam DRM`**, for example, [Steamless](https://github.com/atom0s/Steamless). - -> [!NOTE] -> `ckpe_loader -c address_of_base_fixed` will make the starting address fixed, starting from `0x140000000`, changes the .exe header. +> For versions **`1.6.438.0`** and **`1.10.162.0`**, you first need to remove **`Steam DRM`**, for example, [Steamless](https://github.com/atom0s/Steamless). # Demonstration <p align="center">