从本篇起,逆向工厂带你们从程序起源讲起,领略计算机程序逆向技术,了解程序的运行机制,逆向通用技术手段和软件保护技术,更加深刻地去探索逆向的魅力。html
1951年4月开始在英国牛津郡哈维尔原子能研究基地正式投入使用的英国数字计算机“哈维尔·德卡特伦”,是当时世界上仅有的十几台电脑之一。图中两人手持的“纸带”便是早期的程序,纸带经过是否穿孔记录1或0,而这些正好对应电子器件的开关状态,这即是机器码,是一种早期计算机程序的存储形式。 java
计算机程序是用来实现某特定目标功能,因此须要将人类思惟转换为计算机可识别的语言,从人类语言到电子器件开关的闭合,这中间的媒介即是“编程语言”。python
“编程语言”大体分为三类:c++
一、机器语言,又称机器码、原生码,电脑CPU可直接解读,因该语言与运行平台密切相关,故通用性不好,上面提到的利用卡带记录的便属于该类语言;编程
二、汇编语言,是一种用于电子计算机、微处理器、微控制器或其余可编程器件的低级语言,亦称为符号语言。在不一样的设备中,汇编语言对应着不一样的机器语言指令集, 运行时按照设备对应的机器码指令进行转换,因此汇编语言可移植性也较差;编程语言
三、高级语言,与前两种语言相比,该类语言高度抽象封装,语法结构更接近人类语言,逻辑也与人类思惟逻辑类似,所以具备较高的可读性和编程效率。可是高级语言与汇编语言相比,因编译生成的辅助代码较多,使运行速度相对“较慢”。 java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,易语言等等 均属于高级语言。spa
学会编程语言各类基本语义语法后,就能够实战了,而实战场所由IDE提供。IDE(集成开发环境Integrated Development Environment)是用于提供程序开发环境的应用程序,目前IDE的种类繁多,再也不敖述,只要本身用得顺手、开发效率高、你开心就好。.net
http://www.freebuf.com/special/114231.htmlhtm
另外能够参考逆向工程系列 http://www.freebuf.com/news/others/86147.htmlip