INTEL İŞLEMCİLERE YÖNELİK BİR UNASSEMBLER TASARIMI

Bülent DÖKME, Nurettin TOPALOĞLU
3.563 491

Öz


Yazılım tersine mühendisliği; yazılım kodlarının donanım bileşenleri üzerindeki etkilerini, işlevlerini, davranış ve belgelerini analiz ederek sistem soyutlarını ve tasarım bilgilerini oluşturan bir tersine mühendislik disiplinidir. Çevirici (assembler), tersine çevirici (unassembler), sanal simülatörler ve hata ayıklayıcılar (debugger) birer yazılım tersine mühendislik araçlarıdır. Bu çalışmada, Intel mikroişlemci komut kümesine ait farklı uzunluklardaki makine kodlarını sembolik dile dönüştüren bir tersine çevirici uygulaması geliştirilmiştir. Bu uygulama, 32-bitlik Intel işlemci mimarisinde kullanılan, aynı zamanda derleyicilere yönelik, sembolik dilden makine kodlarına çevrimde, güncellenebilen ve belli bir hiyerarşi sunan açık kaynak kodlu, tablo tabanlı satır-içi kod çevrimi yapabilen bir yazılımdır. Hem assembler hem de unassembler olarak çalışan bu yazılım, sadece belgelendirme ve açıklama mahiyetindeki mevcut tablo tabanlı unassembler uygulamalarına farklı bir bakış açısı ve derinlik getirmiştir.


Anahtar kelimeler


Assembler, unassembler, derleyici, tersine mühendislik, assembly dili

Tam metin:

PDF


DOI: http://dx.doi.org/10.17341/gummfd.37310

Referanslar


Chikofsky, E.J. ve Cross J.H., “Reverse Engineering and Design Recovery: A Taxonomy”, IEEE Software, Cilt 7, No 1, 13-17, 1990.

Younis, M.B, ve Tutunji T., “Reverse Engineering Course at Philadelphia University in Jordan”, European Journal of Engineering Education, Cilt 37, No 1, 83-95, 2012.

Ali, M.R., “Why Teach Reverse Engineering”, ACM SIGSOFT Software Engineering Notes, Cilt 30, No 4, 1-4, 2005.

Arbone, C., Ditu, B., Craciun, S. ve Badea, D., “Model-Driven Inline Assembler Generator for Retargetable Compilers”, Control Systems and Computer Science (CSCS), 2013 19th International Conference on Digital Object Identifier, Bucharest, Romania, 71-76, 2013.

Golden, G. R., “A Highly Immersive Approach to Teaching Reverse Engineering”, Proceedings of the 2nd Conference on Cyber Security Experimentation and Test, Berkeley, CA, USA 1-1, 2009.

Paleari, R., Martignoni, L.M., Roglia, G.F. ve Bruschi, D., “N-version Disassembly: Differential Testing of x86 Unassemblers”, Proceedings of the 19th International symposium on Software testing and analysis (ISSTA), Trento, Italy, 265-274, 2010.

Jamthagen, C., Lantz, P. ve Hell, M., “A New Instruction Overlapping Technique for Anti-disassembly and Obfuscation of x86 Binaries”, Proceedings of the 2013 IEEE Workshop on Anti-malware Testing Research (WATER’13), Montreal, Canada, 25-33, 2013.

Topaloğlu, N. ve Gürdal, O., “A Highly Interactive PC Based Simulator Tool for Teaching Microprocessor Architecture and Assembly Language Programming”, Journal of Elektronika ir Elektrotechnika, Cilt 98, No 2, 53-58, 2010.

Cifuentes, C., “An Environment for the Reverse Engineering of Executable Programs”, 2nd Asia Pasific Software Engineering Conference (APSEC’95), Washington, DC, USA, 410-419, 1995.

İnternet: Intel Corporation, “IA-32 Intel® Architecture Software Developer’s Manual”, Intel Corporation, Denver, USA, http://flint.cs.yale.edu/cs422/doc/24547112.pdf 2003.

İnternet: Intel Corporation, “Intel® 64 and IA-32 Architectures Software Developer’s Manual”, Intel Corporation, Denver, USA, http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32 architectures-software-developer-manual-325462.pdf , Bölüm 3, 2013.

İnternet: The Netwide Assembler: http://www.nasm.us/, 2013.

Ma, W., "Design and Testing of a CPU Emulator", Texas A&M University, Microsoft Research Technical Report, United States of America, 1-12, 2009.

Hsieh, W., "Reverse-Engineering Instruction Encodings", 2002 USENIX Annual Technical Conference, Monterey, USA, 133-145, 2002.

Paleari, R., “N-version Disassembly: Differential Testing of x86 Unassemblers” International Symposium on Software Testing and Analysis (ISSTA 2010), Trento, Italy, 1-10, 2010.

Fadıl, S., “Mikroişlemciler için Genelleştirilmiş Assembly Derleyici” Elektrik-Elektronik-Bilgisayar Mühendisliği 10. Ulusal Kongresi, İstanbul, 523-526, 2003.

Payer, M., “Fast Binary Translation: Translation Efficiency and Runtime Efficiency”, 2nd Workshop on Architectural and Microarchitectural Support for Binary Translation (AMAS-BT'09), Austin, Texas, USA, 2009.

Sridhar, S., Shapiro, J.S. ve Bungale, P.P., “HDTrans: A Low-overhead Dynamic Translator”, SIGARCH Computer Architecture News, Cilt 35, No 1, 135–140, 2007.

Chen, Wen-Ke, Lerner, S., Chaiken, R. ve Gillies, D.M., “Mojo: A Dynamic Optimization System”, In ACM Workshop Feedback-directed Dyn. Opt. (FDDO-3), 2000.

Olszewski, M., Cutler, J. ve Steffan, J.G. “Judostm: A Dynamic Binary-rewriting Approach to Software Transactional Memory”. In PACT ’07, Washington DC, USA, 365–375, 2007.

İnternet: www.pcsistem.net/unassembler,2013.

Brey, B.B., “The Intel Microprocessors: Architectures, Programming and Interfacing” (Eighth Edition), Prentice Hall, USA, June 2008.




Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.