Squalr Official Website
Begleiten Sie uns auf unserem Discord -Kanal
Squalr ist eine Performant -Speicherbearbeitungssoftware, mit der Benutzer Cheats in ihren Windows -Desktop -Spielen erstellen und teilen können. Dies umfasst Speicherscanning, Zeiger, X86/X64 -Montage -Injektion usw.
Squalr erzielt schnelle Scans durch Multi-Threading-Anweisungen mit SIMD-Anweisungen. Siehe diesen Artikel: Simd in .NET. Um diese Gewinne zu nutzen, muss Ihre CPU Unterstützung für SSE, AVX oder AVX-512 haben.

Sie finden eine detaillierte Dokumentation über das Wiki. Es gibt drei Möglichkeiten, Squalr zu verwenden:
Unten finden Sie eine kurze Dokumentation der Nuget -Paket -APIs
Wenn Sie die Nuget -Pakete verwenden, ist es wichtig, sich in die Ausgabe des Motors einzuschließen, um Protokolle von Ereignissen zu erhalten. Diese sind von unschätzbarem Wert für die Diagnose von Problemen.
using Squalr . Engine . Logging ;
.. .
// Receive logs from the engine
Logger . Subscribe ( new EngineLogEvents ( ) ) ;
.. .
class EngineLogEvents : ILoggerObserver
{
public void OnLogEvent ( LogLevel logLevel , string message , string innerMessage )
{
Console . WriteLine ( message ) ;
Console . WriteLine ( innerMessage ) ;
}
} using Squalr . Engine . OS ;
.. .
IEnumerable < Process > processes = Processes . Default . GetProcesses ( ) ;
// Pick a process. For this example, we are just grabbing the first one.
Process process = processes . FirstOrDefault ( ) ;
Processes . Default . OpenedProcess = process ; using Squalr . Engine . Memory ;
.. .
Reader . Default . Read < Int32 > ( address ) ;
Writer . Default . Write < Int32 > ( address ) ;
Allocator . Alloc ( address , 256 ) ;
IEnumerable < NormalizedRegion > regions = Query . GetVirtualPages ( requiredProtection , excludedProtection , allowedTypes , startAddress , endAddress ) ;
IEnumerable < NormalizedModule > modules = Query . GetModules ( ) ;Squalr kann x86/x64 -Anweisungen zusammenstellen und zerlegen, wodurch Nasm nutzt.
using Squalr . Engine . Architecture ;
using Squalr . Engine . Architecture . Assemblers ;
.. .
// Perform assembly
AssemblerResult result = Assembler . Default . Assemble ( assembly : "mov eax, 5" , isProcess32Bit : true , baseAddress : 0x10000 ) ;
Console . WriteLine ( BitConverter . ToString ( result . Bytes ) . Replace ( "-" , " " ) ) ;
// Disassemble the result (we will get the same instructions back)
Instruction [ ] instructions = Disassembler . Default . Disassemble ( bytes : result . Bytes , isProcess32Bit : true , baseAddress : 0x10000 ) ;
Console . WriteLine ( instructions [ 0 ] . Mnemonic ) ;Squalr verfügt über eine API zum Durchführen von Hochleistungsspeicher -Scannen:
using Squalr . Engine . Scanning ;
using Squalr . Engine . Scanning . Scanners ;
using Squalr . Engine . Scanning . Scanners . Constraints ;
using Squalr . Engine . Scanning . Snapshots ;
.. .
DataType dataType = DataType . Int32 ;
// Collect values
TrackableTask < Snapshot > valueCollectorTask = ValueCollector . CollectValues (
SnapshotManager . GetSnapshot ( Snapshot . SnapshotRetrievalMode . FromActiveSnapshotOrPrefilter , dataType ) ) ;
// Perform manual scan on value collection complete
valueCollectorTask . CompletedCallback += ( ( completedValueCollection ) =>
{
Snapshot snapshot = completedValueCollection . Result ;
// Constraints
ScanConstraintCollection scanConstraints = new ScanConstraintCollection ( ) ;
scanConstraints . AddConstraint ( new ScanConstraint ( ScanConstraint . ConstraintType . Equal , 25 ) ) ;
TrackableTask < Snapshot > scanTask = ManualScanner . Scan (
snapshot ,
allScanConstraints ) ;
SnapshotManager . SaveSnapshot ( scanTask . Result ) ;
} ) ;
for ( UInt64 index = 0 ; index < snapshot . ElementCount ; index ++ )
{
SnapshotElementIndexer element = snapshot [ index ] ;
Object currentValue = element . HasCurrentValue ( ) ? element . LoadCurrentValue ( ) : null ;
Object previousValue = element . HasPreviousValue ( ) ? element . LoadPreviousValue ( ) : null ;
} // Example: Tracing write events on a float
BreakpointSize size = Debugger . Default . SizeToBreakpointSize ( sizeof ( float ) ) ;
CancellationTokenSource cancellationTokenSource = Debugger . Default . FindWhatWrites ( 0x10000 , size , this . CodeTraceEvent ) ;
.. .
// When finished, cancel the instruction collection
cancellationTokenSource . cancel ( ) ;
.. .
private void CodeTraceEvent ( CodeTraceInfo codeTraceInfo )
{
Console . WriteLine ( codeTraceInfo . Instruction . Address . ToString ( "X" ) ) ;
Console . WriteLine ( codeTraceInfo . Instruction . Mnemonic ) ;
} | Referenz | Beschreibung |
|---|---|
| XAML -Formatierer | XAML sollte durch dieses Formater geleitet werden |
| Stiftung | Stylecop zur Durchsetzung von Codekonventionen. Beachten Sie, dass wir einige Standardkonventionen abweichen. Wir verwenden den vollständigen Typennamen für Variablen (Ex int32 und nicht int). Die Argumentation ist, dass dies ein Speichereditor ist. Daher verwenden wir den Typennamen, der am explizitesten ist, um die Codierungsfehler zu vermeiden. |
Um Squalr zusammenzustellen, sollten Sie nur Visual Studio 2017 benötigen. Dies sollte auf dem neuesten Stand sein. Wir aktualisieren Squalr häufig, um die neueste Version des .NET -Frameworks zu verwenden. Hier sind die wichtigen Bibliotheken der Drittanbieter, die dieses Projekt verwendet:
| Bibliothek | Beschreibung |
|---|---|
| Easyhook | Managed/Unmanaged API Hooking |
| Sharpdisasmus | UDIS86 Assembler portiert auf C# |
| CsScript | C# Skriptbibliothek |
| Avalonedit | Code -Bearbeitungsbibliothek |
| Sharpdx | DirectX -Wrapper |
| Clrmd | .NET -Anwendungsinspektionsbibliothek |
| Avalondock | Dockingbibliothek |
| Livecharts | WPF -Diagramme |
| Bibliothek | Beschreibung | Zweck |
|---|---|---|
| Asmjit | x86/x64 Assembler | Ersetzen Sie Fasm, verbessern Sie drastisch das Scripting |
| Asmjit | x86/x64 Assembler | Originales C ++ - Projekt. Kann dies port/interop, wenn die obige Version nicht funktioniert (kann auch nicht vollständig funktionieren, und etwas Brauch ist möglicherweise erforderlich) |
| WpfhexeditorControl | Hex -Editor | Hex Editor / Memory Hex Editor |
| Openentk | OpenGL -Wrapper | Grafikinjektion |
| Sharpdx | DirectX -Wrapper | Grafikinjektion (derzeit mit Sharpdx nur für Eingabe) |
| Sharppcap | Paketaufnahme | Paketeditor |
| Paket.net | Paketaufnahme | Paketeditor |