Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Program oyun vs. kırma


SpiderS_DangeR

Öne çıkan mesajlar

Razzın dediği gibi normal build edilmiş bir programı yeniden aynı kodlara çeviremeyeceğin için assembly kodlarına çeviriyorsun ondan sonra atlama veya içindeki keyi buluyosun genelde şifreleme algoritmalarıyla şifreleniyor onlar ama çözülmemiş yok diye biliyorum şimdiye kadar. Bit kaydırma şifrenin yarısını bi yerde tutup diğer yarısını başka bir yerde tutma falan filan mixliyorsun. Crack olayındaysa tam tersini yaparak oraları atlamasını veya geciktirmesini sağlıyorsun veya içindeki keyi bulup çıkartıyosun.
Link to comment
Sosyal ağlarda paylaş

razzRaziel said:

bizim pic mikroişlemci derslerine giren hoca acayip teşvik ediyodu. hakır kırakır olun diye.

adamların yazdığı programları tersten çözerek orijinal olmadığını anlayıp çalışmamasına neden olan kod bloklarını iptal edip atlatıyorsun falan işte. zevkli baya ama beyin yakıcı bir iş.


evet ilk 2 mesaj galiba anahtar
assembly + reverse engineering

insan o kadar uğraştıktan sonra o programı bi debuggerla açıp 2 3 jumpı iptal edip full sürümün kullanılır hale getirilmesi coderlar açısından gerçekten kötü bişey olsa gerek
Link to comment
Sosyal ağlarda paylaş

Reverse engineering denen olayla, evet. C, C++ gibi dillerde kod compile edildikten sonra makine diline yani assembly'e çevrilir. x86 assembly diye aratabilirsiniz komutları için. Sonra, bi .exe dosyasının başında dosya hakkında bilgiler veren bi header bulunur. Bu headerdan sonra program kodunun assembly'e çevrilmiş hali yer alır. Bunlar direkt olarak belleği ve program akşını kontrol eden mov, add, jmp, call, jnz gibi komutlar veya henüz C/C++ koduyken yazılmış ve sonradan çevrilmemiş stringler olabilir. Reverse engineering de bu kodları analiz edip, istediğin sonucu üretecek şekilde değiştirme olayı.

Bi exeyi direkt olarak bi hex editor ile açıp baktığınızda pek bi şey anlayamazsınız. Stringler de aralarında boşluklar bulunacak şekilde yazılmış olabilir. O yüzden disassembler adı verilen programlar kullanılır. Bunlar makine kodunu alıp, daha anlaşılır bi hale getirirler. Tabii yine makine kodu şeklinde olurlar da, mesela program içinde yazılı stringleri, Win32 API'sine veya diğer DLL'lere yapılan metod çağrılarını açık bi şekilde gösterebilirler.
Makine kodunu gördükten sonra da iş artık sana ve tecrübene kalmış. Örneğin; bi program iki pencere açtırmıyosa ve hata veriyosa, verdiği hata stringini kodlar arasında aratırsın. Hatayı veren kod parçasını bulup, hatayı vermeden önce yaptığı kontrole bakarsın. Bu kontrolün sonucuna göre programın atlayacağı hedefi değiştirirsin. Genelde bu kontrol "şunu şunu yapıp şu registera at, şu registerın değeri 0 ise 1241241 offsetine git" şeklindedir ve 1241241 offsetinde önce hata mesajını gösteren, sonra da programdan çıkan bi kod parçası olur. Sen az önceki kontrol kodunu "şunu şunu yapıp şu registera at, işlem yapma" diye değiştirirsen, program pencere kontrol işlemini yaptıktan sonra hata verip programı kapatmak yerine, kaldığı yerden devam eder.

Her programda böyle olcak diye bi şey yok ama aşağı yukarı böyle. Ama yine de dediğim gibi, her şey tecrübeye bağlı. Örneğin bazı programlar "packed" olur yani direkt olarak disassembler ile çözülemiycek şekilde karmaşıklaştırılmıştır. Bunun için unpacker programları olsa da, programın hangi yöntemle pack edildiğini bilmek gerekir.

Ben bikaç program önereyim yine de. OllyDbg çok güzel disassembler/debugger program. Programın çalışma şeklini adım adım göstermesi bi yana, program kodunda ani değişiklikler yapıp işleyişini gösterebiliyo. CFF Explorer denen program, bi dosya ile ilgili bütün bilgileri dökebilen, header üzerinde değişiklikler ve hatta program kodunu bile unpack yapabilen bi program. HexWorkshop da çok güzel bi hex editor.

Belki lamer sıtayla yapıp Ultima Online'ın 2.0.3 clientı nası bilinçli bi şekilde multi açılabilir hale getiriliyo yazabilirim eğer üşenmezsem ve yasak değilse asklfjhbnsdjk
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
peki şöle bişi yapılabilir mi. elimde tek exe'den oluşan büyük ihtiimalle c++ ile yazılmış bir dosya var.. ben bunu bi şekilde decompile edip içindeki kodun nasıl yazıldığını görebilir miyim?

küçük, faydalı ama eski yönetmeliklere göre hesap yapan bir program. öyle ekstrem bişi değil..
Link to comment
Sosyal ağlarda paylaş

dasaaa said:

peki şöle bişi yapılabilir mi. elimde tek exe'den oluşan büyük ihtiimalle c++ ile yazılmış bir dosya var.. ben bunu bi şekilde decompile edip içindeki kodun nasıl yazıldığını görebilir miyim?

küçük, faydalı ama eski yönetmeliklere göre hesap yapan bir program. öyle ekstrem bişi değil..


hayır. exe olduktan sonra programın yazıldığı dilde filan aynı şekliyle geri döndürmek mümkün değildir pek. hatta direk, geri döndürmek mümkün değildir diyeyim...
ama assemblyi kurcalarsan yapılan işlemi az çok anlayabilirsin (aşırı zor bi olay tabiki...)
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...