GG ve Lua Script Aobs formatı (GG aobs tarama)

Ve tekrar selam…

Global kodlama dili olan Lua ile Sktir.com da oyunlara özel örnekler ve çözümler vermeye devam edeceğim…
Umarım bu kodlamalar ile deneyiminiz biraz daha şekillenir…

İlgili konu başlıkları:

  1. Lua kodlaması ićin android program kullanma…
  2. Lua da aobs kodu (Array of byte) oluşturma.
  3. GG de aobs kodu arama ve değiştirme…
  4. GG Lua Script de aobs kodu arama ve değiştirme…

Gerekli olanlar:

  1. Lua kodu düzenlemek için android program (PC başında olanlar Cheat Engine kullanabilir; www.cheatengine.org )
    Comet Lua Script editor (android)
    https://play.google.com/store/apps/details?id=cc.sidi.SigmaScript

  2. Game Guardian

  3. Hile ve kod sınaması için bir oyun… (Bu konuda kodlanacak örnek oyun (İlgili açığı bulduğu için @Pro_Ejder e teşekkürler)
    Ice Age Village
    https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftIAHM

  4. Lua kodlaması ićin android program kullanma:

Önce lua kodlarımızı düzenlemek için Comet uygulamasını açalım … print(“hello lua”) yazalım ve “Run” yazısına tıklayıp, aşağıda (Output) çıktı penceresinde sonucu görelim…
Bu çıktı penceresine basılı tutun ve açılan pencereden ister copy i seçip kopyalayın, ister clear ı sećip temizleyin veya menüyü keşfedin…


Şimdi ilk kodumuzu oluşturduk, yukarıda sağda "Menu"ye tıklayalım ve "Save As"ı seçip lua script ve kodlarımızı kaydedebileceğimiz bir klasör seçip, yeni script.lua mıza isim verip kaydedelim. ( Konu devamında bu scriptin adı GG aobs format olarak anılacak bilginize :wink: )

  1. Lua da aobs kodu (Array of byte) oluşturma:
    Comet in ekranını temizleyin ve aşağıdaki kodu kopyalayıp Comet ekranına yapıştırın
    ----------- Game Guardian Aobs Kodlama -------------

function byteToAobsGG(rakam,frmat)
tbl = rakam
ek = “”
bytes=0
snc = “”
sonucAobs=(function(nmr) src= (string.format("%08x",tonumber(nmr)):reverse():upper():gsub("(.)(.)","%2%1 “))
return src end)
sonuc=(function(nmr) src= (string.format(”%08x",tonumber(nmr)):reverse():upper():gsub("(.)(.)","%2%1h;"))
return src end)
if frmat==1 then
for i, k in ipairs(tbl) do
–print( i…" : "…k)
ek = ek … sonuc(k)
bytes=tonumber(i) * 4
end
ek = string.sub(ek, 1, -2) … “:”…bytes
end

if frmat==2 then – Aobs kodunda joker karakter formatla
bytes = #rakam / 3
bytes = math.floor(bytes) + 1
ek = string.gsub(rakam, “ss “, “0~~0;”):gsub(”%s”, “h;”)
ek = ek … “:” … tonumber(bytes)
end

if frmat==3 then --Değişim koduna eklenmeyen rakamları ayrıştır…
for i, k in ipairs(tbl) do
–print( i…" : “…k)
if k==“ss” then snc=string.gsub(k, “ss”, “00h~FFh;00h~FFh;00h~FFh;00h~FFh;”) else snc= sonuc(k) end
bytes=tonumber(i) * 4
ek = ek … snc
end
ek = string.sub(ek, 1, -2) … “:”…bytes
end
if frmat==4 then
for i, k in ipairs(tbl) do
–print( i…” : "…k)
ek = ek … sonucAobs(k)
bytes=tonumber(i) * 4
end
–ek = string.sub(ek, 1, -2)
–print(“bytes: “…bytes…”\nAobs format:”)
end

if frmat==5 then
for i, k in ipairs(tbl) do
–print( i…" : "…k)
ek = ek … sonucAobs(k)
bytes=tonumber(i) * 4
end
–ek = string.sub(ek, 1, -2)
–print(“bytes: “…bytes…”\nAobs format:”)
end
return ek
end

------------------ kod sonu --------------------

Aşağıda bu kodun lua script örmeğini vereceğim…

Kod 4 çeşit aobs formatlaması yapıyor… (bunlardan ikisini kullanacağız 1 ve 4 … 2 ve 3 GG örneklerine baktığım ve oyunda kullanımı hata veren örneklerdir…)

Kod nasıl kullanılır:
Örnek olarak verdiğimiz oyunda altın ve palamut için kullanılan 16 byte kodlar ile ( Byte kısaca: Bulduğunuz her rakam 0 veya 100 veya 1000000000 ,hepsi aobs olarak 4 byte dir. Örnek sıfır rakamı; “00 00 00 00” dır. Bir rakamı; “01 00 00 00” dır. Bir milyon; “40 42 0F 00” dır. Yani her byte tek çift ve yukarıda örnekleri verilen DWORD lar ise 4 byte dir.)
GG tarama kodumuza bir örnek alalım.
Aşağıda kullanım koduna görev hediyesi miktarlarını yazalım… Altın için 5000 palamut için 1 veriliyor… Biz kodu manuel taradık ve benzersiz olsun diye kodun etrafından 20587 ve yanında 0 bulduk. şimdi benzersiz kodumuz şöyle oldu:
1
5000
0
20587
Yukarıdaki format koduna rakamları formatlamak için: Rakamları sırayla yazıp aralarına virgül koyalım…Sondaki format komutu 1 zaten…

print(byteToAobsGG({1,5000,0,20587},1))

Yukarıdaki kodu Comet e yapıştırdığınız kodun en altına yapıştırın ve yukarıdaki Run yazısına tıklayın…
Size aşağıda şu çıktıyı verecek…(Sondaki 16 kodunuzun toplam byte sayısı.

01h;00h;00h;00h;88h;13h;00h;00h;00h;00h;00h;00h;6Bh;50h;00h;00h:16

Oyun ve GG açık ise bu kodu, Bellek C++ Alloc seçili ve Tarama Byte ile arayıp deneyim…
Şöyle bir sonuç çıkmalı…


Not : Scripte kullanmak isteyenler için konu sonunda örnek vereceğim.

Göründüğü üzere 16 yazdık sona ve 16 adet bir byte sonuç çıktı… Sonuçlardan hangisini tıklayıp Git e baksanız formattan önceki rakamlarımızı alt alta görürsünüz…
Bunlari 1 ve 5000 i ister manuel yükseltip düzenleyin resimde olduğu gibi, isterniz konuya devam edin, değişim kodunu oluşturalım…

Değişim kodu:

Arama kodunu yaptığımız komut için Comet e script e geri dönüp şöyle düzenleyip run a basıp çıktı alıyoruz;
Ben 1 i 500000, 5000 i 1000000 olarak düzenledim, 0 ve 20587 sistem kodu olduğu için aynı kalsın…

print(byteToAobsGG({500000,1000000,0,20587},1))

Çıktı şöyle olmalı:

20h;A1h;07h;00h;40h;42h;0Fh;00h;00h;00h;00h;00h;6Bh;50h;00h;00h::16

Bu çıktıyı değişim için GG de şöyle kullanın:
16 sonucun listelendiği arayüzde olmalısınız, değilseniz yukarıdan 16 yazan yere tıklayın, şimdi en sağda arama büyüteci yanındaki defter simgesine tıklayın ve kod değişim yerini temizleyip, yukarıdaki değişim kodunu yapıştırın (basılı tutun oraya ve paste yazısı çıkınca tıklayın)
Muhtemelen kodlar hemen değişmez, sonuçlardan birine tıklayın ve Git e tıklayıp bakın.

İşlem tamam… İleride lazım olur diye Comet de Menu ye tıklayın ve listeden Save As seçin format scriptini kaydedin.
Not: Comet de scriptleriniz arası geçiş yapmak için Menu>>>Recent Scripts e tıklayıp listeden açın, tabi önce Save yapın…

Script için Tarama ve değişim kodlaması:

Yukarıdaki tarama va değişim çıktıları ile örnekleyeğim…

-------------Tarama kodu -------------
gg.setRanges(gg.REGION_C_ALLOC) --bellek aralığı…

gg.clearResults() --listede farklı kodlar varsa temizle…

–tarama byte…
gg.searchNumber(“01h;00h;00h;00h;88h;13h;00h;00h;00h;00h;00h;00h;6Bh;50h;00h;00h:16”, gg.TYPE_BYTE)

gg.getResults(16) --result hem fren hem sınama olarak kullanılır zira byte aralığı ile result vermezsen script hata verir…

-------------- Değişim Kodu --------------

gg.editAll(“20h;A1h;07h;00h;40h;42h;0Fh;00h;00h;00h;00h;00h;6Bh;50h;00h;00h:16”, gg.TYPE_BYTE)

gg.clearResults() --muhtemelen değişimden sonra temiz liste bırakacaksın…

Yine geldik konu sonuna, şuraya format scriptini lua dosyası olarak bırakayım, Comet ile Open e basıp bunu deçip açarsınız…

Sktr-GG-AobsFormatsV1.lua (1.6 KB)

Tüm bu konuyu telefonda oluşturmak yorucu oldu… PC başına geçince daha fazla konu ile öğretici oluşturmam kolay olur…

Sorularınız varsa lütfen yorum yapın, çözümleri birlikte bulalım…

İyi oyunlar…

4 Likes

Muhteşem anlatım. Ellerine emeğine sağlık… Geleceğin lua öğrencilerine önderlik oldunuz.(Bende dahil) test etme zamanı :slight_smile:

1 Like

Çok iyi anlatmışsın ellerine sağlık ," Harbi Hileci " olmanın hakkını veriyorsun

1 Like

Benimde beklediğim bir egitimdi teşekkür ederim bu scrip olayının nasıl yapıldığını herzaman çok merak etmiştim

1 Like

@Pro_Ejder ile bir çok konuyu çek ediyorduk, ne gerekli ise ona odaklanıyorum… Zira PC baßına geçince coşacak bu kodlar umuyorum…
Telefona alışık değilim, bir çok şey kısıtlı…

Yapacağınız bu sporu, dönüş yok… :slight_smile:

1 Like

Emeğine sağlık.

1 Like

Hala kıyıda isen, ne gerekli denize atlamak için onu söyle lütfen, sana sözüm vardı, neler gerekli söyle birlikte çözeceğiz,
Bu coşkunun büyümesi katılımcıların fikirleri ile mümkün… :slight_smile:

Denize atlamak için şu anda tek engel zaman, onuda, bir şekilde halledip artık yüzmeye başlamak lazım :pray:

2 Likes