x86 / x64 Assembly Memory Protect Detect

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
  • Konuyu başlatan
  • Moderatör
  • #42
x86-x64 Assembly
Kurucu
Katılım
28 Kas 2015
Mesajlar
500
Çözümler
1
Tepki puanı
782
Ödüller
11
10 HİZMET YILI
@dummyfx01

I think you didn't understand the subject
 
Seçkin Üye
Katılım
16 Şub 2019
Mesajlar
309
Çözümler
2
Tepki puanı
21
Ödüller
6
Yaş
31
7 HİZMET YILI
çok iyi 64 bit gelir inşallah elinize sağlık
 
Onaylı Üye
Katılım
29 Mar 2019
Mesajlar
67
Tepki puanı
3
Ödüller
4
Yaş
32
7 HİZMET YILI
konuyla alakam olmadığı halde harika bir yazı
 
☆☆Her oyun bir gün hileyi tadacaktır☆☆
Griffin Premium
Katılım
12 Kas 2017
Mesajlar
13,726
Çözümler
240
Tepki puanı
5,132
Ödüller
23
8 HİZMET YILI
İnşallah 64 bit gelir 4 gözle bekliyoruz
 
momoland[jooE]fanı
Süper Üye
Katılım
31 Mar 2016
Mesajlar
656
Çözümler
9
Tepki puanı
52
Ödüller
9
10 HİZMET YILI
smart gaga sürekli çöküyor bunla alakalımı acaba
 
Seçkin Üye
Katılım
6 Şub 2020
Mesajlar
310
Çözümler
1
Tepki puanı
10
Ödüller
1
Yaş
27
6 HİZMET YILI
böyle konuları bilmek cidden önemli. Beklemedeyiz
 
Üye
Katılım
9 Tem 2018
Mesajlar
19
Tepki puanı
0
Yaş
26
7 HİZMET YILI
çok iş görürbekşiyoruz
Post automatically merged:

abi aslında biz bunu üzün süredir bekliyorudk işimize yarayacak
 
Noob olduğundan değil Kolsuzlardan hile açıyor
Seçkin Üye
Katılım
31 Mar 2018
Mesajlar
303
Çözümler
2
Tepki puanı
10
Ödüller
3
Yaş
39
8 HİZMET YILI
Bunlarla ne gibi şeyler yapabiliriz bi sınırı varmı mesela
 
Üye
Katılım
18 Şub 2017
Mesajlar
4
Tepki puanı
0
9 HİZMET YILI
Assembly mimarisinde mnemonic yani işlemcinin belirli görevleri assembly diline convertleyip talimatlar vererek makine kodunu ((0-1)) değiştirerek istediğiniz herşeyi yapmanızı sağlıyan assembly kodlarıdır.

Peki bu mimarinin en büyük baş belası nedir ? Windows işletim sisteminin bazı "memory segment " yani hafıza bölümlerine erişimi engellemesi veya o bölümün hiç olmaması sonucunda eğer sizin yazdığınız kodlama bu erişimi olmuyan bölümlere erişirse cevap (( CRASH )) uygulamanın çökmesi olacaktır.

Windows işletim sisteminde bazı oyunların aniden crash atması veya kullandığınız uygulamanın aniden çökmesinin en büyük sebebi erişimi olmuyan bi bölüme erişmesinden kaynaklanıyor.

Assembly mimarisinde kesin olan bişey vardır, Yazma izni olmuyan bi bölüme yazamaz, Okuma izni olmuyan bölümü okuyamaz , Yanlış anlamayın adress leri değil , adressleri her türlü okur ama bu adressin verdiği değeri okuyamaz, Bunun için windows işletim sisteminin o bölüme erişim iznini vermesi gerekiyor veya erişmeye çalıştığınız memory bölümünün var olması gerekiyor.

Peki ben şimdi size ne gösterecem ? Bu memory protectleri okumanı sağlıyan tamamen Assembly kodlaması atacam bu benim gibi bu mimariyle uğrasanlar için altın değerinde bi kodlamadır.


Bunu nasıl yapacaz ? Çok güzel soru demi şimdi erişimi olmuyan bi yere erişmeden o yerin erişimi olup olmadığını kontrol etmek imkansızdır, eee peki erişmeden nasıl alacaz cevabı ?

Windows işletim sisteminin apisini kullanarak ( "NtQueryVirtualMemory" )

NASM:
fk:
push eax // Bu registeri kaydetmek için
push ebx // Bu registeri kaydetmek için
push ecx // Bu registeri kaydetmek için
push edx // Bu registeri kaydetmek için
push esi // Bu registeri kaydetmek için
push edi // Bu registeri kaydetmek için
push ebp // Bu registeri kaydetmek için
push esp // Bu registeri kaydetmek için
lea eax,[eax-84]  // eax registerindeki adresi control etmek için windows apisine gönderiyorum burası kontrol etmek istediğim adrestir.
call cntr
cmp esi,0 // 0 Değeri böyle memory bile yok demek
je yapma
cmp esi,1 // 1 Değeri böyle memory var ama no acces erişim yok demek
je yapma
pop esp // Bu kaydettiğimiz registeri geri getirmek için
pop ebp // Bu kaydettiğimiz registeri geri getirmek için
pop edi // Bu kaydettiğimiz registeri geri getirmek için
pop esi // Bu kaydettiğimiz registeri geri getirmek için
pop edx // Bu kaydettiğimiz registeri geri getirmek için
pop ecx // Bu kaydettiğimiz registeri geri getirmek için
pop ebx // Bu kaydettiğimiz registeri geri getirmek için
pop eax // Bu kaydettiğimiz registeri geri getirmek için
cmp [eax-84],(int)176293393 // Ben classda  control yapıyorum, buradan bazen erişimi olmuyan bi yere eriştiğim için crash yiyorum bunu engelledim işte
je rcle
jmp hk
yapma:
pop esp // Bu kaydettiğimiz registeri geri getirmek için
pop ebp // Bu kaydettiğimiz registeri geri getirmek için
pop edi // Bu kaydettiğimiz registeri geri getirmek için
pop esi // Bu kaydettiğimiz registeri geri getirmek için
pop edx // Bu kaydettiğimiz registeri geri getirmek için
pop ecx // Bu kaydettiğimiz registeri geri getirmek için
pop ebx // Bu kaydettiğimiz registeri geri getirmek için
pop eax // Bu kaydettiğimiz registeri geri getirmek için
hk:
mov edx,[eax]
mov [ebp-2C],edx
jmp returnhere

pop esp // Bu kaydettiğimiz registeri geri getirmek için
pop ebp // Bu kaydettiğimiz registeri geri getirmek için
pop edi // Bu kaydettiğimiz registeri geri getirmek için
pop esi // Bu kaydettiğimiz registeri geri getirmek için
pop edx // Bu kaydettiğimiz registeri geri getirmek için
pop ecx // Bu kaydettiğimiz registeri geri getirmek için
pop ebx // Bu kaydettiğimiz registeri geri getirmek için
pop eax // Bu kaydettiğimiz registeri geri getirmek için
rcle:
mov [eax],0 // Hile için 0 değerini eax registerindeki adresin değerine yaz.
mov edx,[eax]
mov [ebp-2C],edx
jmp returnhere


cllcode:
push ebp
mov ebp,esp
sub esp,7C
lea eax,[ebp-08]
push eax
push 1C
lea ecx,[ebp-7C]
push ecx
push 00
mov edx,[ebp+08]
push edx
push -01 // Handlesi -01 gösteriyoruz böylece api bizim uygulamamızı tarıyor
call NtQueryVirtualMemory // Windows apisi
mov [ebp-0C],eax
mov eax,[ebp-68]
mov [ebp-04],eax
mov esi,eax// Erişim olup olmadığının değeri
mov esp,ebp
pop ebp
ret

cntr:
push ebp
mov ebp,esp
mov [ebp-04],eax
mov eax,[ebp-04]
push eax
call cllcode
pop eax
pop ebp
ret

mx1:
jmp newmem
returnhere:




Protect olmuyan = hex (00)
No acces olan = hex (01)
Read Only = hex (02)
Read wrıte = hex(04)
wrıte copy = hex (08)
execute = hex (10)
execute_read = hex (20)
execute_readwrıte = hex (40)
execute_writecopy = hex (80)




Dikkat etmeniz gereken benim eklediğim registeri kaydetmek için kullandığım pushlar bunlar olmazsa windows apisi kullandıktan sonra geri bizim fonksiyona döndüğünde registerlerin büyük olasılıkla bozulması bu uygulamanın crash yemesine neden olur.


Şimdilik sadece x86 mimarisi için ekledim ilerliyen zamanlarda bunu 64 bit için olanınıda eklicem , Şimdilik hoşçakalın

Alıntı değildir, İnternette tek başka yerde kaynak yok
Post automatically merged:

eline sağlık
 

STU

Seçkin Üye
Katılım
6 Nis 2019
Mesajlar
309
Çözümler
2
Tepki puanı
12
Ödüller
3
Yaş
35
7 HİZMET YILI
Eline sağlık ama 64 bit gerek bekliyorum
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst