GABB bir sürü Growtopia açma metodu analizi | GABB benzeri program yazma | Mutex Protection Bypass

Napcaz

Katılımcı Üye
28 Nis 2019
767
764
Cudi
Virüssüz bir gabb deneyimi fakat mevcutta olan save.dat kısmını kaldıramıyorsak eğer bizim bilgilerimiz bize yönlendirilirse yine birnevi save.dat'sız versiyon olmuş oluyor.
hangi mevcut? İnternettekilerin yarısından çoğu gerçek gabb bile değil, virüslü ben virüssüz olduğunu düşündüğüm bir tanesini çalıştırdım denemelerimde onda da save.dat lar çalınmıyor çünkü orjinal gabb ın save.dat ları çaldığı falan yok. Yani size gereken eli yüzü düzgün bir gabb bulmak:GABB
bu linkten indirdiğiniz dosyada GABB.exe virüs GABBSettings.exe ise gerçek gabb (tabi gözümden bir şey kaçmış da olabilir ama gördüğüm kadarıyla bir çalıcı kod barındırmıyordu)
 

VurgunCu34

Üye
31 Ara 2018
67
8
Sizin ilk görselde belirttiğiniz save.dat formundan bahsediyorum. Sonrasında tekrar araştırıp bulduğunuz gabb save.dat'sız ise problem yok benim aradığımda sizin bulduğunuz save.dat'sız versiyonu. Amacım hesap çalmak değil yani yanlış anlaşılma olmasın :)
hangi mevcut? İnternettekilerin yarısından çoğu gerçek gabb bile değil, virüslü ben virüssüz olduğunu düşündüğüm bir tanesini çalıştırdım denemelerimde onda da save.dat lar çalınmıyor çünkü orjinal gabb ın save.dat ları çaldığı falan yok. Yani size gereken eli yüzü düzgün bir gabb bulmak:GABB
bu linkten indirdiğiniz dosyada GABB.exe virüs GABBSettings.exe ise gerçek gabb
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
764
Cudi
Sizin ilk görselde belirttiğiniz save.dat formundan bahsediyorum. Sonrasında tekrar araştırıp bulduğunuz gabb save.dat'sız ise problem yok benim aradığımda sizin bulduğunuz save.dat'sız versiyonu. Amacım hesap çalmak değil yani yanlış anlaşılma olmasın :)
Benim ilk görselde verdiğim virüslü bir versiyondu ve içinde gerçekten gabb bile yoktu o kadar kolaya kaçmışlar yani ama bazılarında ise gene virüs var lakin çakmayalım diye gerçek gabb ile birleştirmişler virüs arka planda çalışıyor. Benim ilk görselde verdiğim kodu bulsanız ve mail kısmını kendinizininkiyle değiştirseniz o kodu attığınız insanlar kodu çalıştırınca save.dat dosyaları sizin mail e gelir evet, tabi kod düzgün çalışıyorsa.
 

VurgunCu34

Üye
31 Ara 2018
67
8
Benim ilk görselde verdiğim virüslü bir versiyondu ve içinde gerçekten gabb bile yoktu o kadar kolaya kaçmışlar yani ama bazılarında ise gene virüs var lakin çakmayalım diye gerçek gabb ile birleştirmişler virüs arka planda çalışıyor. Benim ilk görselde verdiğim kodu bulsanız ve mail kısmını kendinizininkiyle değiştirseniz o kodu attığınız insanlar kodu çalıştırınca save.dat dosyaları sizin mail e gelir evet, tabi kod düzgün çalışıyorsa.
Kodu başka birine atmıcam ki, kendim kullanıcam. Kendim kullandığım senaryoda kendi bilgilerimi kendime göndermiş olacaktım tabi dediğiniz gibi kod düzgün çalışıyorsa.
 

eray061

Üye
13 Nis 2021
72
8
Beyler bende bu konularla ilgileniyorum. İsterseniz bi discord sunucusu açalım daha detaylı konuşabiliriz?
 

eray061

Üye
13 Nis 2021
72
8
Amaç gruplaşma değil aslında kendimizi programlamada geliştirmek yardım amacıyla kendi aramızda sorular sormak yardım etmek vs. Konuyla alakalı bir sorum yok yaptığın proje çok güzel. GABB da virüs var mı konusunda ise dikkat ederseniz GABB daki sekmelerde proxy sekmesi var. Burada bir proxy indirme linki var. Eğer o link ölmediyse o proxy virüslü diye hatırlıyorum. Ben o sekmeleri sildim ve gabbı virüssüz başarılı bir şekilde derleyip kullanabiliyorum. Bu veya diğer konular için yardım edebilirim o yüzden bir sunucu açabiliriz isterseniz.
 

rootibo

Kıdemli Üye
13 Mar 2023
2,168
1,459
Selam arkadaşlar geçen günlerde forumda açılan şu konuyu gördüm:
https://www.turkhackteam.org/konular/coklu-sayfa-acma.2042259/

Konuda yapılmak istenen şey growtopia adlı oyunu birden fazla defa açıcak bir program arayışıydı bilenler bilir bunun için kullanılan hali hazırda çalışan GABB adlı bir program var bu program aracılığıyla birden fazla kez growtopia oyununu açıp her birinde giriş yapıp bot hesaplarınızla spam tarzı şeyler yapabiliyorsunuz.

Bende bu işin arka planını araştırmak istedim. Tersine Mühendis kimliğim ile bu konuya bir bakış atmak ve arka planda neler döndüğünü anlamak, analiz etmek istedim. İsterseniz maceraya başlayalım.

Yapmak istediğim şey üst üste birden fazla oyun açmak ve bunların birbirlerinden haberdar olmamasını sağlamak. Pek çok uygulama kendisi çalışırken birtane daha kendisinden çalışmasını istemez bu çakışmadan hoşlanmaz buda çok makul bir istek. Ama sizin ve benim gibi bazı ileri kafalar bir takım fantaziler için bazen bu kuralı aşmak ister. Bu durumda yapmamız gereken şey ikinci growtopia sekmesinin ilkinin var olduğundan haberdar olmamasını sağlamak:D Tamam da nasıl yapıcam dediğinizi duyar gibiyim. Açıkçası bu growtopia nın kendinin zaten açık olup olmadığını nasıl anlamaya çalıştığına göre değişir kanımca. Daha önce hiç böyle bir şeyle uğraşmadığım için genel geçer bir kural varsa bilmiyorum yani size tecrübelerimi aktaramam yok çünkü. Ama birkaç varsayım yapabilirim:

Yürütülen process ler arasında growtopia.exe ismini görünce kapanıyor olabilir eğer böyleyse açtığınız exe nin ismini değiştirmeyi deneyebilirsiniz ama bu kadarla sınırlı değildir

Mutex kontrolü yapabilir bu konuyu araştırabilirsiniz

Pencere isimlerini okuyor olabilir.



Biraz internette araştırma yaptım:

Burda Mutex ve process kontrolleri üzerinde durulmuş.

Sonra bu işlem için growtopia oyununun popüler spam uygulaması (bizzat growtopia kariyerimi bitiren tool aynı zamanda) GABB ı incelemeye karar verdim.
GABB ın arayüzü:
cn8dxnz.png


Kaynak kodu .NET ile yazılmış bu yüzden çok kolay bir şekilde okuyabilirim neler yapmaya çalıştığını belki bize de fikir verir yapmak istediğimiz şeye dair ve internette GABB yazan her şeyi indirmeye başladım nerdeyse hepsi virüslüydü Örnek:

gpf13vq.png

sanırım 2023 yılında birileri hala save dosyalarının peşinde:D

yaklaşık bir saat sonra virüs olmadığını düşündüğüm bir GABB projesi buldum ve bunu analiz etmeye başladım.
Onu Dnspy atar atmaz bir şeylerin farklı olduğunu hissetmiştim:


l11nec2.png

Sol tarafta projenin içindeki metodların adını görebilirsiniz, biraz tuhaf değil mi? c++ dan alıştığımız metodlar gözükmekte ama bu bir c# exe siydi hani (?) Sağ tarafta gördüğünüz kod GABB ın OPEN butonuna basıldığında çalışan fonksiyon, gördüğünüz gibi çokca c++ çağrısı gözükmekte o noktada bunun c++ ile yazılmış ama .net olarak derlenmek üzere konfigüre edilmiş bir proje olduğunu düşündüm. Ve daha fazla bilgi edinebilmek umuduyla github da ki GABB projelerini incelemeye başladım ve bunu buldum: GitHub - SrMotion/GABB-Source: Edited Growtopia Gabb Source
Bu projeyi visual studio ile açtığımda aslında GABB dediğimiz programın gerçekten de c++ ile yazılmış olduğunu gördüm. İki bölümden oluşuyor exe ve dll, exe bizim dnspy ile gördüğümüz kısım dll ise GDLL.dll ve exe kullandığı fonksiyonları burdan tahsis ediyor.
GABB ın main fonksiyonu böyle mesela:

cdaunyu.png

Bu yapıyı gerçekten ilk defa görüyorum ama anladığım kadarıyla GABB .net olarak derlenebilecek şekilde c++ ile yazılmış (daha fazla saçmalamıyım cidden emin değilim çünkü)

Bu da GABB ın GBDLL.dll den fonksiyonları export ettiğinin kanıtı olan bölümü:
exports

Biraz yukarı giderseniz dnspy a koyduğum GABB ss inden bahsediyorum. Orda OPEN butonuna basınca hangi fonksiyonun çalıştığını göstermiştim en aşağıda NewWindow fonksiyonunun çağrıldığını görebilirsiniz. Bu fonksiyon GABB ın growtopia dan bissürü açabilmek için kullandığı fonksiyon. Bu noktada GBDLL.dll yi karıştırmam ve içinden NewWindow fonksiyonunun ne yaptığını çıkarmam gerekiyordu bende bunu yaptım.

GBDLL.dll i IDA ya attım ve export ettiği fonksiyonları gördüm:

94wye4b.png


NewWindow fonksiyonunu görebilirsiniz, işte GABB ın GBDLL.dll den alıp kullandığı bütün metodlar bunlar. Biz bu konuda NewWindow fonksiyonunu yakın merceğe alacağız.

3p7ohrs.png

Baya bir zaman harcadım ve bu koddan bir şeyler anlamaya çalıştım ama kaçırdığım noktalar vardı ve gerçekten tükenme noktasına geldim. GBDLL.dll in kaynak koduna bakmayı akıl etmek ise 2 günümü aldı:D

C++:
void WNDMGR::NewWindow() {
    this->isUpdating = true;
    cout(L"Creating");
    //suspend all;
    for (unsigned int i = 0; i < list.size(); i++) if (!list[i].second->isSuspended()) list[i].second->Suspend(); //1
    //delete mutex;
    this->SetPublicMutex(NULL);
    //add window
    WND * p = new WND(this->filepath);//2

    if (!p->mutexCaught()) {
        p->Kill();
        delete p;
        this->update();
        return;
    }
    this->SetPublicMutex(this->NewPublicMutex());//3
    this->list.push_back({ this->freeID(), p });
    for (unsigned int i = 0; i < list.size(); i++) if (list[i].second->isSuspended()) list[i].second->Resume();//4
    this->isUpdating = false;
    if (this->list.size()) this->list[this->list.size() - 1].second->setTitle(L"Growtopia [" + std::to_wstring(this->list[this->list.size() - 1].first) + L"]");//5
    this->update();
}

Burda ki bazı windows api leri fonksiyonlara sarıldığı için ve o fonksiyonların kodunu atmak da çirkin olacağı için (isteyen github dan baksın linkini bıraktım yukarda) ben size kısaca burda ne döndüğünü açıklayayım (numaralandırarak anlatıcam):

//1 bir for döngüsünün bir listeyi döndüğünü görebilirsiniz bu liste kodun içerisinde açılan her bir growtopia penceresinin handle bilgilerini içeriyor kısaca, ve for döngüsü sayesinde hepsi suspend ediliyor SuspendThread windows api si kullanılarak. Bunun neden yapıldığını açıklayacağım.

//2 bizim asıl istediğim şey var bir nesne oluştuğunu görebilirsiniz bu nesne yeni oluşan growtopia penceresinin handle bilgisi, evet yanlış duymadınız growtopia yı tam olarak bu satırda başlatıyoruz o yüzden bunun içine girmemiz gerekiyor işler biraz karışabilir sıkı durun.

C++:
WND::WND(std::wstring filepath) {
    if (CreateProcess(filepath.c_str(), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &this->SI, &this->PI)) { //2.1
        int limit = 100;
        HWND HWNDResult = NULL;
        while (HWNDResult == NULL && limit > 0) {
            HWNDResult = EnumWindowsMyGt(this->PI.dwProcessId); //2.2
            limit++;
            Sleep(100);
        }
        if (HWNDResult != NULL) {
            this->wnd = HWNDResult;
        }
        else {
            this->Kill();
            this->wnd = NULL;
            return;
        }

        DWORD exit_code;
        GetExitCodeProcess(this->PI.hProcess, &exit_code); //2.3
        if (exit_code != 259) return;

        this->mutex_caught = false;
        if (EnumerateHandles(this->PI.dwProcessId, this->PI.hProcess) != 0) { //2.4
            this->Kill();
        }
        else this->mutex_caught = true;
    }
}

//2.1 Bu kodda growtopia process nin başlatıldığını görebilirsiniz (CreateProcess apisi ile).
//2.2 Burda yapılan şey, açtığımız process ile aynı pid e sahip ve ismi "Growtopia" olan pencere yi bulana kadar yani createprocess ile açtığımız programın penceresini bulana kadar while loop unun içinde dönmek (birde limit belirtilmiş sonsuza kadar beklemesin diye, max 100 tur loop edilicek yani). (Pencere ismi ve pid kontrolü EnumWindowsMyGt içinde yapılıyor dilerseniz bakabilirsiniz)
//2.3 Burda biraz önce oluşturduğumuz growtopia process inin hala aktif olup olmadığını kontrol ediyoruz. (GetExitCodeProcess bir windows apisidir ve bize int main fonksiyonundan dönen değeri sağlar kendisine verdiğimiz process id sine tekabül eden işlem için)
//2.4 Dalmayın! Önemli yerlerdeyiz bu fonksiyon tam olarak bypass ın yapıldığı yere gidiyor biraz uzun olduğu için kodu buraya koymıcam ama sizin şuan ona baktığınızı varsayarak açıklıyorum:
Anlık olarak işletim sisteminde çalışan tüm handle lerı NtQuerySystemInformation windows api si ile topluyoruz ve bunlardan biraz önce açmış olduğumuz growtopia process inin pid i ile kendi pid leri aynı olan handle lerı filtreliyoruz sonra bunların arasında "Mutant" olanları (Yani CreateMutex ile oluşan Mutex) ve içinde "Growtopia" kelimesi geçenleri de ayrıeten filtreliyip bunları DuplicateHandle windows api si ile (ayrıntıya girmicem) kapatıyoruz. Bu sayede Mutex ten kurtulmuş oluyoruz.

Peki biz "Growtopia" adında bir Mutex ın varlığını ve bunun önemini nerden biliyoruz? Growtopia nın kendisinden bir tane daha açılmasını önlemek için Mutex oluşturduğunu ve bunun varlığını kontrol edip eğer varsa yeni process ini sonlandırdığını nerden biliyoruz? Bunu Growtopia nın kaynak koduna baktığımız zaman görüyoruz ama şuankine bakmanız biraz zor çünkü vmprotect ile korumuş p*ştlar o yüzden şu konuya bakmanız gerekmekte -> GitHub - TomiyokaTanaka/growtopia_cracked: Reverse engineering a game by binary patching the game so that it can open multiple instances
Burdaki arkadaşımız Growtopia kendisini vmprotect ile korumadan önce onu ghidra ya atmış ve instance kontrol mekanizmasını bir güzel analiz etmiş. Görüldüğü üzere Growtopia nın içinde şu tarz bir kod bulunuyor:
program_handle = OpenMutexA(0x1f0001,0,"Growtopia");
if ((program_handle == (HANDLE)0x0))
program_handle = CreateMutexA((LPSECURITY_ATTRIBUTES)0x0,0,"Growtopia");
//Oyunun kodları burdan devam ediyor
else:
MessageBoxA((HWND)0x0,"An instance of Growtopia is already running! Go play that one.", "Growtopia",0);
//Buranın sonu ise boklu dere, kapanıyor program

Yani growtopia sistemde halihazırda "Growtopia" adında bir mutex varsa çalışmıyor işte GABB da burda devreye giriyor ve yeni başlattığı process daha açılmadan üstte anlattığım şekilde Mutex ten kurtuluyor. Ama sadece bunu yapması Growtopia nın gene hata vermesine yol açıyor bunu kendim tecrübe ettim.
imd012w.png

Çünkü growtopia çalışma esnasında bu mutex in varlığını kontrol ediyor olsa gerek ve onu göremediğinde hata veriyor çünkü olması lazımdı! Bu yüszden biz ikinci bir gorwtopia process i açmak için onu silip geri yerine koymazsak yukardaki hatayı alıyoruz. İşte GABB bu yüzden //3 numarada böyle yapıyor kendisi "Growtopia" adında bir mutex oluşturuyor ama bunu tamda tüm mutex leri sildikten sonra yapıyor işte bu olay growtopia nın başlangıçta yaptığı kontrolü aşmamızı sağlıyor çünkü growtopia penceresi oluşturulduğu an "Growtopia" adındaki mutex(ler) i siliyoruz ve hemen ardından kendimiz bir tane oluşturuyoruz buda growtopia nın üsteki ss deki gibi crash olmamasını sağlıyor.
Eveet... //4 numaraya geldik burda ResumeThread windows apisi kullanılarak topladığımız tüm growtopia process leri tekrardan resume ediliyor. Tüm işlemler başlamadan öncede suspend edilmişlerdi ve size bunu açıklayacağımı söylemiştim şimdi söyleyebilirim sanırım. GABB ın böyle yapmasının sebebi yeni bir growtopia process i oluşturulurken halihazırda çalışan diğer growtopia process lerinin tüm mutex lerin silindiği an varya o anda crash vermelerini engellemek. Bu yüzden onları basitçe pause edip sonra devam ettiriyoruz. Mutex imizi tekrar oluşturunca yani. Evet tüm bu bilgileri topladıktan ve bazı kaynakları özellikle GABB ın kaynak kodunu emcükledikten sonra kendim basitçe bu işlemi yapan tek vasfı yeni pencere açabilmek olan bir kod hazırladım. Bir nevi deney amaçlı. Onuda aşağı bırakacağım. Aklınıza takılan yada benim yanlış anlattığımı düşündüğünüz bir husus varsa gelin yorumlara tartışalım. Bu operasyonuda bu şekilde bitirmiş olduk:D Selametle kalın.
@VuRGuN3666
GitHub - SemsYapar/GrowtopiaMultiInstances: Abaout Bypass Growtopia one instance protectionMini Deneysel Bypass Kodum (GABB dan araklanmış:D):
Konunun videolu anlatımı:
elinize saglik artik daha fazla para kazanixam
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
764
Cudi
Amaç gruplaşma değil aslında kendimizi programlamada geliştirmek yardım amacıyla kendi aramızda sorular sormak yardım etmek vs. Konuyla alakalı bir sorum yok yaptığın proje çok güzel. GABB da virüs var mı konusunda ise dikkat ederseniz GABB daki sekmelerde proxy sekmesi var. Burada bir proxy indirme linki var. Eğer o link ölmediyse o proxy virüslü diye hatırlıyorum. Ben o sekmeleri sildim ve gabbı virüssüz başarılı bir şekilde derleyip kullanabiliyorum. Bu veya diğer konular için yardım edebilirim o yüzden bir sunucu açabiliriz isterseniz.
Gabb in kaynak kodu analizini yaptığımda proxy dahil bazı modüllerini çalıştırmak için toplam 3 tane indirme linki buldum içinden linkler olduğu için bunların zararlı olup olmadığı konusunda bir şey söyleyemem. Ama sanırım orijinal kodla alakası olmayan bir eklenti o muhtemelen virüs

elinize saglik artik daha fazla para kazanixam
Ne demek efendim gece gündüz siz in daha fazla para kazanmanız için çalışıyoruz gördüğünüz gibi
 

eray061

Üye
13 Nis 2021
72
8
Gabb in kaynak kodu analizini yaptığımda proxy dahil bazı modüllerini çalıştırmak için toplam 3 tane indirme linki buldum içinden linkler olduğu için bunların zararlı olup olmadığı konusunda bir şey söyleyemem. Ama sanırım orijinal kodla alakası olmayan bir eklenti o muhtemelen virüs
Proxy de c++ ile yazılmış growtopia için bir hile yazılımı. Virüslü olabilir eğer linkler ölmemişse indirip taratabilirsiniz.

Hocam bir sorum var c++ ile yazılan bu proje c# ilede yazılabilir mi?
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.