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

Exe de bulunan C++ kodunu görmek


crackedboy86

Öne çıkan mesajlar

Arkadaşlar, Visual Studio ortamında yazılmış ufak bir proje var. Yaptığı iş, farklı çözüm yolları bulunan bir problemle ilgili. Zira kullanılan mantık daha hızlı çalışıyor. Benim buladildiğim faklı çözümler ise daha yavaş. Ama ben bu exe içinde bulunan C kodunu görmek istiyorum, nasıl bir mantık kullanılmış. Bakmak mümkün müdür ? Nasıl programlar kullanmak gerekir. İlgileriniz için şimdiden teşekkürler, iyi forumlar....
Link to comment
Sosyal ağlarda paylaş

Abi cok acik soyleyeyim, bu soruyu soruyorsan yapamazsin.
Hele hele, debug mode'da compile edilmediyse ve debug icin olan yanci dosyalar yoksa exe'nin yaninda (pdb ler vs) hic yapamazsin, bir suru kitap okuman yillarini vermen gerekir. Her compiler farkli sekilde compile eder falan filan dipsiz kuyu.
Java olsa cok kolay da, bu sartlar altinda sorunun cevabi imkansiz yani.
Link to comment
Sosyal ağlarda paylaş

Uğraşmaya değmez, zaten imkansız gibi birşey yukarıda belirtildiği gibi. Ha binary olarak veya assembly olarak görürsünde ne işine yarar.

Bence yazdığın kodlarla nasıl daha hızlı işlem yaptırabilirsin onun üzerine çalış elbet bir yol bulursun.
Link to comment
Sosyal ağlarda paylaş

abi machine code'dan assembly'e gecis kolay, spoiler'a koyuyorum uzun biraz orada yaziyor VS ile nasil yaparsin diye.
mesele assembly'den C++'a gecis, onun icin hicbir sey yok cunku compile sirasinda bircok sey gidiyor, compiler optimizasyon yapiyor cart curt, assembly kodundan C++'a gecirmek asil reverse engineering ve assembly'de sadece dort islem yapan bir hesap makinesi dahi yapmis olaniniz varsa olayin ne kadar tatsiz ve imkansiz oldugunu biliyordur zaten, anlayamazsin o assembly kodunu. anlayabiliyorsan ve C++'a gecirebiliyorsan zaten dev sirketler reverse engineer olarak ise alirlar seni :)
assembly derken mips assembly falan degil hardcore assembly bu arada soz konusu olan

machine code -> assembly

If you have MS Visual Studio C++ 6.0 installed in your system then you have an exe to assembly language converter. This is named DUMPBIN.exe. You can find this awesome utility at Microsoft Visual StudioVC98Bin folder. If you had chosen the default location then you will find this Microsoft Visual Studio folder in C:Program Files.

To disassemble suppose The_EXE_File_Here.exe then copy it to that folder and open CMD (by typing cmd in Run... under Start Menu). Now use CD "C:Program FilesMicrosoft Visual StudioVC98Bin" to goto that folder. Now type in

dumpbin /disasm /out:Disassembled.txt The_EXE_File_Here.exe

The disassembled code will be stored in Disassembled.txt in that folder.

It has still more features.

1) Use the command

dumpbin /imports /out:TheImportsList.txt The_EXE_File_Here.exe

to get a list of dll files The_EXE_File_Here.exe depends on. The list will also have the names of all the callable functions in those dlls. To get the list of the dlls ONLY the use /dependents instead of /imports.

2) Use the command

dumpbin /headers /out:HeadersInfo.txt The_EXE_File_Here.exe

This will print all the details about The_EXE_File_Here.exe's internals like the no. of sections it has, checksum, etc. and many statistics on the exe file.

3) Use the command

dumpbin /rawdata /out:RawDump.txt The_EXE_File_Here.exe

It will print the full code in binary along with ascii translations.

4) To get know about all the switches use

dumpbin /?

Link to comment
Sosyal ağlarda paylaş

disassembler kullanarak asm'ye çevirmen gerekiyor. daha sonra asm'den c'ye çeviren programlar var.

ama hem disassembler'lar her zaman başarılı olamıyor. hem de asm'den c'ye çevirenler pek başarılı değil..

sonuçta sağlıklı bir sonuç alman çok zor. geçende konuşuyorlardı yanımda, çok ilgili olduğum bir konu değil ama "pe explorer"ı övüyorlardı disassembler olarak. diğerlerine göre daha başarılı sonuçlar veriyormuş.

asm'den c'ye çevirirken, asm bilmek daha faydalı olabilir.

edik: şimdi farkettim başlıkta c++, mesajda c diye geçiyor.
Link to comment
Sosyal ağlarda paylaş

İşin zorluğu bahsettiğin exe'nin .NET assembly olup olmadığına göre değişir. Eğer program Managed C++ ile yazılmış ve Visual C++ compiler'ı ile derlenerek compile edilmişse, bahsettiğin exe dosyası bir .NET assembly olabilir. Bu durumda exe native code yerine CIL kodu içerir, dolayısıyla işin daha kolay olur.

.NET assembly dediğim şeyin assembly koduyla alakası olmadığına dikkatinizi çekerim. .NET assembly nedir merak edenler şurdan section 1.3'e bakabilir: http://dl.getdropbox.com/u/325776/baa_main.pdf. Özetlersek bir .NET assembly CIL kodu dışında bir çok meta bilgi bulundurur (örnerğin id, versiyon, class'lar...) ve .NET framework yüklü olmadan çalıştırılamaz.

.NET framework, .NET assembly'lerini inceleyebilmeniz için ildasm gibi bir çok tool ile birlikte geliyor. Ayrıca .NET assembly'leri class'lar gibi bir çok meta bilgiyi içerdiği için decompile etmek gayet kolay bir şey (obfuscate edilmişse daha zorlaşıyor tabi). Örnek. http://www.program-transformation.org/Transform/DotNetDecompilers
Link to comment
Sosyal ağlarda paylaş

Assembly ile hiç alakan yoksa imkansız bişey. Zamanında ugrastımız dandirik Motorola 6811 processorda en basit işlemlerde bile baya uğraştırırdı assembly'de yazılan başkasının kodunu çözmek, compiler'ın çıkarttığı assembly'i takip etmek çok daha zor olsa gerek. Bir defa çok temiz bir memory map'e ihtiyacın olur, değişken sayısı arttıkça işin içinden çıkamayabilirsin. Bazı generic kod bloklarını anlayabilirsin, mesela for loop içindeki bloklar gibi ama her compiler farklı compiler eder de vs vs...
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...