Ini adalah alat yang dibuat untuk memasukkan string menggunakan kode tingkat rendah
Strategi kami untuk memasukkan string adalah membuat bagian baru menggunakan alat seperti Stud_PE atau CFF Explorer agar memiliki ruang di executable untuk menambahkan kode baru, metode yang umum adalah mengganti instruksi asli dan melompat ke kode Anda, umumnya lompatan memiliki 5 panjangnya byte, terkadang Anda perlu mengganti lebih dari satu instruksi dan jangan lupa untuk menempatkan instruksi asli seperti CMP dan TEST setelah eksekusi kode Anda, tentu saja, jika ada.
@StrInject: ;Declare StrInject Label
push EDX ;Backup EDX, ECX, EBX Registers
push ECX
push EBX
push EAX ;The EAX is the string pointer or a unicode character
call GetProc ;Here the Srl.Process Pointer is catched
call EAX
pop EBX ;Restore EDX, ECX, EBX Registers from the "Backup"
pop ECX
pop EDX
jmp RetPnt ;Continue the Execution
Kami memiliki berbagai metode untuk menangkap Srl.Process Pointer, yang satu ini untuk game yang memiliki alokasi modul utama dinamis, dimungkinkan menggunakan contoh di bawah ini jika Anda telah menyuntikkan ekspor ke dalam game yang dapat dieksekusi, Anda dapat menggunakan Stud_PE atau CFF Explorer untuk melakukan ini, Anda juga perlu membuat bagian baru yang dapat dieksekusi untuk menambahkan kode baru kami.
Dalam kasus Contoh ini, alamat Srl.Process di tabel impor selalu relatif terhadap bagian baru kami yang dapat dieksekusi.
Pada kode di bawah EIP yang ditangkap adalah ke "pop EAX" dan Srl. Proses di tabel impor misalnya 0x02B9C400 dan "pop EAX" di 0x02B9E44C, jadi... 0x02B9E44C - 0x02B9C400 = 0x204C, sekarang jika kita kurangi nilai EIP ini kita bisa mendapatkan posisi Srl.Penunjuk proses.
Jika Anda ingin menggunakan SRL untuk memasukkan Karakter Non-ASCII, Anda perlu memanggil Srl.Process dan memberikan karakter fungsi GetGlyph kepadanya.
@GetProc:
call @Nxt ;Call the label Nxt
@Nxt: ;Declare the Nxt label
pop EAX ;Catch the EIP :)
sub EAX , 0x204C ;Subtract the Difference from the EIP and Import Address
mov EAX , [ EAX ] ;Read the import table
ret
Setelah beberapa masalah dengan permainan yang memuat ulang string di dalam satu lingkaran, saya membuat GetDirectProcess, untuk mengimpor fungsi ini gunakan metode yang sama dari SRL. Proses di atas, Tetapi Anda akan mengubah GetProc, berikut contoh kodenya:
@GetProc:
call @Nxt ;Call the label Nxt
@Nxt: ;Declare the Nxt label
pop EAX ;Catch the EIP :)
cmp dword [ EAX + 0x21 ], 0 ;Verify if already have the Address
jne @Finish
push EAX ;Backup NXT Address
sub EAX , 0x2050 ;Subtract the Difference from the EIP and Import Address
mov EAX , [ EAX ] ;Read the import table
call EAX ;Calls the GetDirectProcess
pop EBX ;Recovery NXT Address
mov [ EBX + 0x21 ], EAX ;Save the Process Address
mov EAX , EBX ;Prepare to Finish
@Finish:
add EAX , 0x21 ;Ajust Pointer
mov EAX , [ EAX ] ;Read the Process Address
ret
@ Ptr :
dd 0 ;Here is the @Nxt: + 0x21
Metode ini tidak memiliki parameter, cukup panggil dan tangkap EAX, EAX adalah penunjuk ke fungsi Proses
SRL memiliki fitur untuk menginstal SRL secara otomatis di mesin game tanpa Anda perlu mengetahui cara menambal game tersebut.
Pertama, unduh SRL DI SINI, ekstrak ke direktori game, lalu ganti nama SRLWrapper.dll menjadi d3d9.dll; dinput8.dll atau pembungkus lain yang didukung Lihat Di Sini apa yang didukung, lalu di SRL.ini atur AutoInstall ke true.
Beberapa game SoftPal memerlukan setup manual dengan bantuan Auto-Installer, klik di bawah untuk melihat contohnya:
EntisGLS AutoInstall hanya memungkinkan Anda memodifikasi konfigurasi XML mesin internal, dan dengan itu, Anda akan dapat mengatur font khusus dan memuat file yang diekstraksi.
Cukup tambahkan <file path="$(CURRENT)Patch"/>
di file EntisGLSConfig.xml
yang dihasilkan dan SRL akan secara otomatis memaksa game menggunakan pengaturan khusus Anda.
Catatan: Prioritasnya ada di baris atas, tambahkan baris di atas blok <file/>
atau <archive/>
lainnya.
Fitur umum yang diinginkan orang-orang dari String Reloads adalah fitur Pengubah Font, fitur ini berfungsi dengan sebagian besar game yang tidak memiliki font yang telah dirender sebelumnya dan mudah untuk diatur.
Pertama, unduh SRL DI SINI, ekstrak ke direktori game, lalu ganti nama SRLWrapper.dll menjadi d3d9.dll; dinput8.dll atau pembungkus lain yang didukung Lihat Di Sini apa yang didukung.
Sekarang, Anda perlu mengaktifkan hook CreateFont di SRL.ini, kami memiliki 4 varian CreateFont, CreateFontA, CreateFontW, CreateFontIndirectA dan CreateFontIndirectW.
Biasanya sebuah game hanya menggunakan salah satu dari 4 opsi tersebut, cara yang benar untuk mengetahui hook apa yang harus Anda aktifkan adalah dengan menemukan game yang dapat dieksekusi jika dia memiliki string "CreateFontA", "CreateFontW", "CreateFontIndirectA" atau "CreateFontIndirectW"... Atau, jika Anda malas atau agak gila, Anda bisa mengaktifkan semuanya saja, tetapi tidak disarankan.
Saat Anda mengaktifkan hook CreateFont, SRL akan dapat mengubah beberapa hal dalam font game, seperti ukuran font (Tidak berfungsi dengan semua mesin) dan font itu sendiri.
Di akhir SRL.ini Anda dapat menemukan entri remap font 'sampel' default, [Font.0]
, Anda dapat menambahkan lebih banyak parameter pemuatan ulang font dengan menambahkan blok baru dengan nomor yang bertambah di nama blok, seperti [Font.1]
, [Font.2]
, [Font.3]
...
Pada parameter From
Anda dapat mengatur nama wajah font 'asal' yang akan diubah, di mana * berarti semua font.
Pada FromWidth
atau FromHeight
Anda dapat mencocokkan font yang akan dimodifikasi dengan menentukan ukuran aslinya. (Secara default dikomentari)
Di FromCharset
Anda dapat mencocokkan font yang akan dimodifikasi dengan menentukan rangkaian karakter font. (Secara default dikomentari)
Dalam parameter To
Anda dapat mengatur nama wajah font 'target' Anda.
Pada parameter Charset
Anda dapat memaksa font charset yang akan digunakan, dimana 0 = auto, dikomentari = jangan diubah, 932 = SJIS, lihat nilai selengkapnya di sini
Pada parameter Width
, Height
, Anda dapat mengubah ukuran font, angkanya dapat berupa ukuran absolut atau ukuran relatif, +5
atau -1
adalah nilai relatif yang dihitung dengan nilai ukuran font asli. itu .
awalan pada nilai tentukan nilai itu adalah nilai absolut, maka .-1
akan benar-benar menjadi -1 terlepas dari ukuran font aslinya.
Parameter Width
, Height
bisa lebih dinamis jika Anda mau, Anda bisa menyetel nilai sebagai ekspresi yang akan dievaluasi selama waktu proses, misalnya, jika Anda menyetel Width
ke if([Width] < 0, [Width] * -1, [Width])
, ekspresi ini akan memeriksa apakah Lebarnya negatif, dan menjadikannya positif, jika tidak, tidak akan menghasilkan apa-apa.
Ekspresi dapat memiliki parameter: [Width]
, [Height]
, [Charset]
, [Facename]
, Anda dapat memeriksa detail penggunaan ekspresi di sini
Selain itu, di blok [StringReloads]
, Anda dapat menemukan parameter LoadLocalFonts
, dengan parameter ini disetel ke true, SRL akan membuat game dapat memuat font dari direktori game (atau subdirektori) tanpa perlu menginstal font di host sistem.