Opcode ile OTO Pointer bulma

Opcode ile OTO pointer bulma

Gerekli araçlar
1. Ollydbg
2. Olly SigMaker Plugini
3. Pointer ı bilinen eski bir exe
4. Lena reisin de dediği gibi ortalama seviyede, okuduğunu anlayabilen bir beyine ihtiyaç var

*Elimizdeki eski exe unpack edilmiş yada daha “dump” edilmiş olmalı.

Neyse olly ile Unpacklemiş/Dumplanmış exe mizi açıyoruz.
00401000 KO exenin başlangıç ep si olan 401000 lü adrese geçiş yapıyoruz.

opcode 1

Sağ tık->Search for->All constants
diyip pointer ımızı aratıyoruz. (Benimki buydu=DF0710)
Adresi kullanan bir sürü sonuç çıkacak tek tek tıklayıp opcode lar uygunmu
diye bakıcaz. İçinde başka pointer geçmemesi bizim için iyi olur sabit opcodelar bulmaya çalışıcaz.

Ben sonuçları biraz didikleyip şöyle birşey buldum.

opcode 2

Gördüğünüz gibi pointerımızın tutulduğu adresin altında değişmesi zor olan komutlar gelmiş.
En önemlisi kod bloğunda bizim pointerdan başka pointer yok buda demektirki bu opcode ların değişme ihtimali çok az
buda bizim çok işimize geliyor patch attığında değişme az çünkü.

Neyse imzasını alacağımız yerede karar verdikten sonra imzamızı SignMaker ile oluşturalım.
İmzasını oluşturacağımız kod buluğunu mouse ile görünür hale getiriyoruz.

opcode 3

Sağ tıklıyoruz MakeSig->Test Sig e tıklıyoruz şöyle bir pencere geliyor

opcode 4

Program bizi hamallıktan kurtardı imzayı oluşturdu bizde bunu not alalım.
Imzamız= \x8B\x3D\x00\x00\x00\x00\x8D\x44\x24\x14\x50\x8D\x 4C\x24\x24
Mask=xx????xxxxxxxxx
Pencereyi kapattık şimdi olly ile işimiz bitti geçelim projemize.

 

Kodlarımız :

DLL projesi ile kullanıyordum ben, exe ile kullanmak için ayar çekmek gerekir fonksiyona.
Neyse ben şu şekilde kullanıyordum

Not: Decimal olarak çıkar sonuç, hex e çevirip doğruluğunu kontrol edebilirsiniz.

Imzayi olly ile almak zorunda değilsiniz c.e ilede pointer aratılıp, pointerı kullanan adresler bulunabilir ve imza yı c.e ilede alıp uygun formata çevirebilirsiniz.