Situs resmi Squalr
Bergabunglah dengan kami di saluran Perselisihan kami
Squalr adalah perangkat lunak pengeditan memori performant yang memungkinkan pengguna untuk membuat dan berbagi cheat di game desktop Windows mereka. Ini termasuk pemindaian memori, pointer, injeksi perakitan x86/x64, dan sebagainya.
Squalr mencapai pemindaian cepat melalui multi-threading dikombinasikan dengan instruksi SIMD. Lihat artikel ini: SIMD di .net. Untuk memanfaatkan keuntungan ini, CPU Anda perlu memiliki dukungan untuk SSE, AVX, atau AVX-512.

Anda dapat menemukan dokumentasi terperinci di wiki. Ada tiga cara untuk menggunakan Squalr:
Di bawah ini adalah beberapa dokumentasi singkat tentang API Paket Nuget
Jika menggunakan paket Nuget, penting untuk menghubungkan ke output mesin untuk menerima log peristiwa. Ini sangat berharga untuk mendiagnosis masalah.
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 dapat merakit dan membongkar instruksi x86/x64, memanfaatkan NASM.
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 memiliki API untuk melakukan pemindaian memori berkinerja tinggi:
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 ) ;
} | Referensi | Keterangan |
|---|---|
| Formatter xaml | XAML harus dijalankan melalui pemula ini |
| Stylecop | Stylecop untuk menegakkan konvensi kode. Perhatikan bahwa kami menyimpang pada beberapa konvensi standar. Kami menggunakan nama tipe lengkap untuk variabel (ex int32 daripada int). Alasannya adalah bahwa ini adalah editor memori, jadi kami lebih suka menggunakan nama jenis yang paling eksplisit untuk menghindari kesalahan pengkodean. |
Untuk mengkompilasi Squalr, Anda hanya perlu Visual Studio 2017 . Ini harus up to date, kami sering memperbarui Squalr untuk menggunakan versi terbaru dari .NET Framework. Berikut adalah perpustakaan pihak ke -3 yang penting yang digunakan proyek ini:
| Perpustakaan | Keterangan |
|---|---|
| Easyhook | Pengait API yang dikelola/tidak dikelola |
| Sharpdisasm | Udis86 Assembler porting ke C# |
| Csscript | Perpustakaan Scripting C# |
| AvalonEdit | Perpustakaan Pengeditan Kode |
| Sharpdx | Wrapper DirectX |
| Clrmd | Perpustakaan Inspeksi Aplikasi .NET |
| Avalondock | Perpustakaan Docking |
| LiveCharts | Bagan WPF |
| Perpustakaan | Keterangan | Tujuan |
|---|---|---|
| Asmjit | x86/x64 assembler | Ganti fasm, tingkatkan skrip secara drastis |
| Asmjit | x86/x64 assembler | Proyek C ++ asli. Semoga port/interop ini jika versi di atas tidak berfungsi (juga tidak dapat sepenuhnya berfungsi, dan sesuatu yang mungkin dibutuhkan) |
| WPFHEXEDITORCONTROL | Editor hex | Editor Hex / Memory Hex Editor |
| Opentk | OpenGL Wrapper | Injeksi Grafik |
| Sharpdx | Wrapper DirectX | Injeksi grafis (saat ini menggunakan SharpDx hanya untuk input) |
| Sharppcap | Packet Capture | Editor Paket |
| Packet.net | Packet Capture | Editor Paket |