Reverse Engineering Giriş

Arkadaşlar Merhaba ,

Uzun zamandır blog yazısı yazmıyor olmamın vicdan azabı ile yeni bir yazıyı sizlere ulaştırıyorum.

Bu kategori altında planlamış olduğum bir yazı dizisi mevcut. Yazılar Amatör Telsizcilik hobisine başlamış olmamın bir ürünü olarak ortaya çıktı.

Çin malı telsizlerin programlama yazılımları çeviri / kodlama hatalarından dolayı yanlış çalışıyor çoğu zaman. Deneme fırsatı bulduğum zastone v77 model bir cihazın fonksiyon tuşlarını yanlış programladığını farkettim. Cihaz üzerinde ekran bulunmadığı için cihaz ile ilgili bilgiler (aktif kanal numarası , batarya durumu , çıkış gücü v.b) cihaz üzerinde yer alan iki adet kısayol tuşuna atanan kombinasyonlar (kısa basma , uzun basma , 2 defa basma v.b) ile sesli olarak kullanıcıya bildiriliyor.  Fakat orjinal yazılımın bir özellik yerine başka bir özellik programladığını farkedince moralim biraz bozuldu.

Örn: Batarya durumu için programladığım fonksiyon tuşu kanal numarasını söylüyor , kanal numarası için programladığım fonksiyon tuşu çıkış gücünü belirtiyor.

Bu durum canımı sıkınca bende cihazın yazılımını çözümleyip aynı işlemleri yapan ve arayüzü Türkçe olan bir yazılım geliştirmeyi planladım.

Bu kapsamda izlediğim başlangıç adımları şöyle ,

  1. Tersine Mühendislik Yöntemine Karar Vermek
    1.  Uygulamayı Decompile Edebilirim
    2.  Uygulama Telsiz İle Seri Porttan Haberleştiği İçin Seri Portu Monitör Edebilirim
    3.  Arduino İle Telsiz PC arasına Kendi Seri Port Adaptörümü Yaparak Geçen Datayı Loglayabilirim
    4.  Telsiz İçerisindeki Yazılımı Decompile Edebilirim

Aşağıdaki adımlar tersine mühendislik yöntemlerinin adımlarını içermektedir.

  1. PEiD yazılımı ile orjinal yazılımın hangi dilde yazıldığını öğrenmek.PEiD v77 AnalysePEiD yazılımı .exe , .dll gibi dosyaların hangi dilde yazıldığını göstererek Reverse işlemi aşamasında bize yol gösterecek en güçlü araçlardan birisidir. Analiz sonucunda göründüğü üzere uygulamanın orjinali C++ ile yazılmış. Decompile işlemi yapabilsek bile muhtemelen çok çok iyi Assembly bilmeden bu uygulama üzerinde tersine mühendislik işlemlerimizi yapamayacağız.
    1. Eltima Serial Port Monitor İle Seri Portu Monitör Etmek

    Seri port üzerinden çalışan yazılımlar üzerinde reverse engineering yaparken kullanmayı en çok sevdiğim yazılım Eltima Serial Port Monitor’dur. Ücretli bir yazılım olmasına rağmen ücretini hakedecek kadar fonksiyonaliteye sahiptir. Mantık oldukça basit. Eltima ile yeni bir session oluşturup izlemek istediğimiz portu seçiyoruz. Sonrasında ise çözümlemek istediğimiz yazılımı çalıştırıp seri porta veri gönderip almasını sağlıyoruz. Eltima üzerinden de geçen datayı görüntüleyebiliyoruz.

     Yeni bir session oluştururken aşağıdaki pencere karşımıza çıkıyor. Port ve görüntüleme seçeneklerini seçtikten sonra

    Start Monitoring butonuna basarak dialog’u kapatıyoruz.

    Monitoring işlemi başladığı zaman karşımıza çıkan pencere aşağıdaki gibi oluyor.

     

    Sonrasında ise orjinal yazılımı açarak seri porta data gönderip/almasını sağlıyoruz.

    Ben telsiz yazılımından telsize ‘Read’ komutu gönderdim. 16 kanallı cihazımızda bulunan tüm özellikleri okuyacak.

    Yukarıdaki görüntüden görebildiğiniz üzere orjinal yazılım okuma yaparken eltima tarafında da data düşmeye başladı.

    Eltima arada köprü vazifesi gördüğü için orjinal yazılımdaki alma/gönderme işlemi bitse bile eltimaya data düşmeye devam edebilir. İşlemin bittiğini anlamak için Eltima Monitor içindeki table view penceresinde Port Close olayını görmemiz gerekiyor. Bkz . Alttaki Görüntü.

    Bu yazımda anlatacaklarım bu kadar. Bir sonraki yazım gönderilen ve alınan verilerin anlamlandırılması üzerine olacak.

    You may also like...

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    + thirty five = 37