C# ile Tersine Muhendislik Ders 3 | Harmony Kullanimi

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Reverser
Katılım
15 Tem 2015
Mesajlar
297
Çözümler
2
Tepki puanı
356
Ödüller
10
10 HİZMET YILI
Evet en son altin anahtarimizi bulup key'i kirmaya calisacaktik.

Encoding.GetString'e hadi dnSpy uzerinden bakalim.
Yuklenen mscorlib'den, System.Text ad alani Encoding tipi GetString yontemini bulalim.

LRAvzjT.png


Karsimiza bu sekilde GetString yontemi cikacak. Burada onemli olan seyler byte[] parametresinin adi o da `bytes`
Gerekli bilgiye sahibiz, simdi hemen harmony'i projemize referans ekleyip islemimize baslayalim.

PDio67s.png


Harmony'i referans olarak ekledim.

Simdi harmony ad alanini kullanalim.

SDEi7zP.png

Hedef dosyamizi System.Reflection ad alaninda ki Assembly.LoadFile ile yukleyelim.

wahhtqE.png

Bir harmony ornegi olusturalim. Id kismina coklu kullanimlarda essiz olacak sekilde bir id girebilirsiniz.
z3ZYXEU.png

Uygulama uzerinde ki tum siniflardan patch yontemi yapacagiz.
Bu yuzden PatchAll yontemini kullanalim.
9xrymPm.png

Statik bir sinif aciyoruz. Ve sinifimiz'a patchleyecegimiz yonteme uygun bir nitelik sagliyoruz.

Kisaca anlatirsak birinci alan, sinifin type'i, ikinci alan yontem, ucuncu alan ise parametrelerin type'i
6Y1xwU7.png

Sinifimizin icerisine `Postfix` adinda bir yontem actim, Harmony de iki tane patch yontemi vardir. Bir tanesi Prefix, digeri ise Postfix.
Prefix orjinal kod calismadan once ki yeri kapsar, Postfix ise calistiktan sonra ki.
Bizim hedefimiz kodumuz islendikten sonra olacagi icin Postfix kullaniyoruz.

tUPwLCx.png


string __result olarak kullandigim sey ise harmony'de Postfix yonteminde kullanacaginiz bir ozellik. Yontemin ciktisini gosteriyor.

Eger yontemin ciktisini degistirmek isteseydik,
Nv3wLZr.png

Basina ref eklememiz yetecekti.

Ikinci parametrede ki bytes ise dnSpy'dan aldigimiz parametre adi ile ayni olmak zorunda.
DBy8cWL.png


Yontemimizi bu sekilde gerceklestirdik.

Simdi dosyamizin entry pointini cagirmamiz gerekiyor.

FrEGHZ3.png


Iste sonuc, hadi programimizi deneyelim :)

R7uNs1Z.png


Dogru anahtarimiz Rexy'imis program bize bunu basarili bir sekilde dogru soylemis. Hedefimiz basarili :)
 
Reverser
Katılım
27 Ara 2017
Mesajlar
236
Çözümler
2
Tepki puanı
4,639
Ödüller
13
8 HİZMET YILI
C# ise bu Fiddler ile kırılır brom
Harmonye gerek yok.
 
Banlı Üye
Katılım
11 Tem 2017
Mesajlar
1,777
Çözümler
2
Tepki puanı
695
8 HİZMET YILI
Bu adamı Gördükçe Kodlamaya Atılmayı düşünüyom Çok İyi Ve Güzel Yapıyor
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst