黑客逆向破解基础-2:程序通常是由什么语言编写的

本文探讨了无壳程序的特征,通过分析不同编译器如VC、VS、易语言编译出的程序,对比其入口点代码、程序区段和加载模块,帮助读者理解加壳前后程序的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个程序从编译出来的时候一般都是没有壳的,不同编译器编译出的无壳程序也是不相同的,认识了不同编译器编译出来的无壳的程序,再去看无壳程序被加壳程序加壳后的样子就轻松很多,经过对比从而了解不同语言无壳程序和加壳后程序的特征是什么,特征主要从“入口点代码”、“程序区段”和“加载模块”等信息来确定。

从目前国内接触到程序看,比较流行的编译器有:VC系列、易语言、.NET、Delphi,一些曾经用的很多但渐渐少了有:VB、ASM、BC++,还有一些用的比较少的有:AutoIt、PB、QT等,下面提供一些由论坛同学编译出来的试炼品,结合实例来看看“入口点代码”、“程序区段”和“加载模块”等特征。

常见的一些程序的特征

1.VC6编译无壳程序
入口点代码是固定的代码,入口调用的API也是相同的,其中有的push地址不同程序可能不同;区段有四个也是固定的.text、.rdata、.data和.rsrc。

PEID查看区段如下:
在这里插入图片描述
OllyDbg查看入口点代码如下:
在这里插入图片描述
2.VS2008和VS2013编译无壳程序
入口点只有两行代码,一个CALL后直接JMP,第一个CALL进去后调用的API也是相同的;区段相对于VC6多了一个.reloc。

PEID查看区段如下:
在这里插入图片描述
OllyDbg查看入口点代码如下:
在这里插入图片描述
在这里插入图片描述

3.易语言编译无壳程序
(1) 由于易语言独立编译是调用VC的链接程序编译的,所以从区段和入口代码特征和VC相同;
(2) 非独立编译比较容易识别,入口特征和模块特征都有krnln.fnr。

易语言特点:可以从程序里找一些call的调用最终都会走到上面核心代码图位置(文字不太好表达),这个方法可以区分和VC的区别。

下面为易语言非独立编译带运行库:

OllyDbg查看入口点代码如下:
在这里插入图片描述
查看模块:
在这里插入图片描述
查看核心代码:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值