使用VC自己动手编写加壳程序
VC++6.0使用方法(精品简约)

第一部分C语言编程环境简介第1章计算机程序设计实验的一般步骤1.1 计算机程序设计实验的目的C语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点,学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的基本能力,并逐步理解和掌握程序设计的思想和方法。
具体的说,通过上机实践,应该达到以下几点要求:1.使学习者能很好地掌握一种程序设计开发环境的基本操作方法(例如(Visual C++6.0),掌握应用程序开发的一般步骤。
2.在程序设计和调试程序的过程中,可以帮助学习者进一步理解教材中各章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法和构造及应用,也就是所谓“在编程中学习编程”。
3.通过上机实践,提高程序分析、程序设计和程序调试的能力。
程序调试是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。
通过不断的积累经验,摸索各种比较常用的技巧,可以提高编程的效率和程序代码的质量。
下面介绍计算机程序设计实验的一般步骤:1.2 计算机程序设计实验的准备上机前需要做好如下准备工作,以提高上机编程的效率。
(1)在计算机上安装一种程序设计开发工具,并学会基本的操作方法。
(2)复习与本次实验相关的教学内容和主要知识点。
(3)准备好编程题程序流程图和全部源程序代码,并且先进行人工检查。
(4)对程序中有疑问的地方做出标记,充分估计程序运行中可能出现的问题,以便在程序调试过程中给予关注。
(5)准备好运行和调试程序所需的数据。
1.3 计算机程序设计实验的步骤(1)运行程序设计开发工具,进入程序设计开发环境。
(2)新建一个文件,输入准备好的程序。
(3)不要立即进行编译和连接,应该首先仔细检查刚刚输入的程序,如有错误及时改正,保存文件后再进行编译和连接。
(4)如果在编译和连接的过程中发现错误,根据系统的提示找出出错语句的位置和原因,改正后再进行编译和连接。
VB加壳脱壳程序源码

VB加壳脱壳程序源码1、窗体代码Private Sub Check1_Click()Text2.SetFocusEnd SubPrivate Sub Image2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image10.Visible = FalseEnd SubPrivate Sub Image3_Click()If Text1.Text = "" ThenMsgBox "Please Select A File First!", vbInformationElseList1.V isible = TrueList2.V isible = FalseFrame3.V isible = FalseList1.Text = " UPX 1.24 "Text2.SetFocusEnd IfEnd SubPrivate Sub Command2_Click()Dim path As String, back_path As String, file_t As String 'Dim's stringsText2.SetFocusCommonDialog1.ShowOpenText1.Text = CommonDialog1.FileNamepath = Text1.Textback_path = "Backupfile.exe"If Check1.V alue = 1 Theni = FreeFileOpen path For Binary As #ifile_t = Space(LOF(i))Get #i, , file_tClose #iOpen back_path For Binary As #iPut #i, , file_tClose #iMsgBox " A Backup of the file has been created in the same location as the original file", vbInformationEnd IfEnd SubPrivate Sub Image3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image8.Visible = TrueEnd SubPrivate Sub Image3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image8.Visible = FalseImage3_ClickEnd SubPrivate Sub Image4_Click()If Text1.Text = "" ThenMsgBox "Please Select A File First!", vbInformationElseText2.SetFocusList2.V isible = TrueList1.V isible = FalseFrame3.V isible = FalseList2.Text = " Krypt "End IfEnd SubPrivate Sub Image4_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image9.Visible = TrueEnd SubPrivate Sub Image4_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image9.Visible = FalseImage4_ClickEnd SubPrivate Sub Image5_Click()If Text1.Text = "" ThenMsgBox "Please Select A File First!", vbInformationElseText2.SetFocusList1.V isible = FalseList2.V isible = FalseFrame3.V isible = TrueFrame4.V isible = TrueEnd IfEnd SubPrivate Sub Image5_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image7.Visible = TrueEnd SubPrivate Sub Image5_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image7.Visible = FalseImage5_ClickEnd SubPrivate Sub Image6_Click()Text2.SetFocusFrame3.V isible = TrueList1.V isible = FalseFrame4.V isible = FalseEnd SubPrivate Sub Command7_Click()Text2.SetFocusIf Text1.Text <> "" And Text3.Text > 0 Thenfsiz = ShowFileSize(Text1.Text)PB1.V alue = 0PB1.Max = Text3.TextPB1.Visible = TrueOpen Text1.Text For Binary As #1For a = 1 To Text3.TextPut #1, fsiz - 1 + a, 0PB1.V alue = aNextCloseEnd IfPB1.Visible = FalsePB1.V alue = 0End SubFunction ShowFileSize(file)Dim fs, f, sSet fs = CreateObject("Scripting.FileSystemObject")Set f = fs.GetFile(file)ShowFileSize = f.Size's = UCase() & " uses " & f.Size & " bytes."'MsgBox s, 0, "Folder Size Info"End Function'94208Private Sub exit_Click()Unload MeEnd SubPrivate Sub Form_Load()Check1.V alue = FalseList1.AddItem " Double Click To Pack "List1.AddItem " "List1.AddItem " UPX 1.24 "List1.AddItem " FSG 1.33 "List1.AddItem " PEPack "List1.AddItem " ASPack "List1.AddItem " PECompact "List1.AddItem " PE-Diminisher "List1.AddItem " PeX v0.99 "List2.AddItem " Double Click To Protect "List2.AddItem " "List2.AddItem " Krypt "List2.AddItem " UPX Scrambler 1.05 "List2.AddItem " UPX Scrambler 1.06 "List2.AddItem " tElock "End SubPrivate Sub Image2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image10.Visible = TrueIf Button = 1 ThenDim linklink = ShellExecute(hWnd, "Open", "/index.php", &O0, &O0, SW_NORMAL)End IfEnd SubPrivate Sub Image6_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image2.Visible = TrueEnd SubPrivate Sub Image6_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image2.Visible = FalseImage6_ClickEnd SubPrivate Sub Image7_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Image10.Visible = TrueEnd SubPrivate Sub Image7_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Image10.Visible = FalseEnd SubPrivate Sub Label5_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 1 ThenDim linklink = ShellExecute(hWnd, "Open", "/index.php", &O0, &O0, SW_NORMAL)End IfEnd SubPrivate Sub Label9_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 1 ThenDim linklink = ShellExecute(hWnd, "Open", "", &O0, &O0, SW_NORMAL) End IfEnd SubPrivate Sub List1_DblClick()If List1.Text = "UPX 1.24 " ThenShell App.path & "\components\packers\upx124.exe " & Chr(34) & Text1.Text & Chr(34), vbNormalFocusEnd IfIf List1.Text = "FSG 1.33 " ThenShell App.path & "\components\packers\fsg133.EXE " & Text1.Text, vbNormalFocusEnd IfIf List1.Text = "PEPack " ThenShell App.path & "\components\packers\pepack.exe "& Chr(34) & Text1.Text & Chr(34), vbNormalFocusEnd IfIf List1.Text = "ASPack " ThenShell App.path & "\components\packers\aspack.exe " & Text3.Text, vbNormalFocusEnd IfEnd SubPrivate Sub List2_DblClick()If List2.Text = "Krypt " ThenShell App.path & "\components\protectors\client.exe ", vbNormalFocusSendKeys "{TAB}"SendKeys "{ENTER}"SendKeys Text1.TextSendKeys "{ENTER}"SendKeys "{TAB}"SendKeys "{TAB}"SendKeys "{ENTER}"SendKeys App.path & "\components\protectors\stub.exe"SendKeys "{ENTER}"End IfIf List2.Text = "UPX Scrambler 1.05 " ThenShell App.path & "\components\protectors\scramble.exe " & Chr(34) & Text1.Text & Chr(34), vbNormalFocusEnd IfIf List2.Text = "UPX Scrambler 1.06 " ThenShell App.path & "\components\protectors\scramble16.exe " & Chr(34) & Text1.Text & Chr(34), vbNormalFocusEnd IfIf List2.Text = "tElock " ThenShell App.path & "\components\protectors\telock.exe " & Chr(34) & Text1.Text & Chr(34), vbNormalFocusEnd IfEnd SubPrivate Sub open_Click()CommonDialog1.ShowOpenText1.Text = CommonDialog1.FileNameEnd SubPrivate Sub Option1_Click()Text2.SetFocusEnd SubPrivate Sub Option2_Click()Text2.SetFocusEnd Sub2、模块代码Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByV al hWnd As Long, ByV al lpOperation As String, ByV al lpFile As String, ByV al lpParameters As String, ByV al lpDirectory As String, ByV al nShowCmd As Long) As LongPublic Const SW_NORMAL = 1。
加壳与脱壳应用及实现

加壳与脱壳的应用与实现一、加壳 (2)1.什么是壳 (2)2.加壳原因 (2)3.壳的加载过程 (3)4.压缩引擎 (5)5.常见的加壳工具 (6)a.常用压缩壳介绍 (6)b.加密保护壳介绍 (7)二、脱壳 (10)1.侦壳 (10)2.脱壳 (13)a.查找程序的真正入口点(OEP) (13)b.抓取内存映像文件 (15)c.输入表重建 (15)附:视频“加壳与脱壳(软件)”和“手动脱壳” (17)加壳与脱壳一、加壳1.什么是壳在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
图1.12.加壳原因就把这样的程序称为“壳”了。
作者编好软件后,编译成exe可执行文件。
1)有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2)需要把程序搞的小一点,从而方便使用。
于是,需要用到一些软件,它们能将exe可执行文件压缩。
3)在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
3.壳的加载过程1)获取壳自己所需要使用的API地址如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API 函数。
壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数2)解密原程序的各个区块(Section)的数据壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。
在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。
壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。
软件加壳技术及实现

软件加壳技术及实现软件加壳是一种常见的软件保护技术,通过将原始的可执行文件进行加密和封装,增加软件的安全性和难度,提高软件的抵抗逆向工程、防止破解的能力。
下面将介绍软件加壳技术的原理及实现方法。
1.软件加壳原理软件加壳的基本原理是将原始可执行文件进行加密处理,生成一个加密后的壳程序,再将原始可执行文件嵌入到壳程序中,并根据可执行文件的特征信息进行相应的处理和解密,最终执行原始程序。
具体的加壳流程如下:(1)加密原始可执行文件:使用对称加密算法(如AES、DES等)对原始可执行文件进行加密处理,使其不可读。
(2)生成壳程序:编写一个壳程序,包括解密原始可执行文件、加载和执行原始程序等功能。
壳程序本身一般是已经加密的,以防止被分析破解。
(3)将原始可执行文件嵌入到壳程序中:将加密后的原始可执行文件隐藏在壳程序中,一般是作为一个资源或数据块存在。
(4)运行壳程序:用户双击运行壳程序,壳程序首先进行解密处理,获取原始可执行文件,然后进行加载和执行。
2.软件加壳实现方法(1)静态加壳:在编译链接阶段对可执行文件进行加壳处理。
静态加壳可以通过修改可执行文件的文件头信息和重定位表等方式实现。
(2)动态加壳:在运行时对可执行文件进行加壳处理。
动态加壳使用的是运行时加载原始程序的方式,可以提高软件的安全性,但也会增加运行的开销。
3.加壳脱壳工具目前市面上有很多成熟的加壳脱壳工具可供使用,如UPX、ASPack、FSG等。
这些工具可以方便地对可执行文件进行加壳和脱壳操作,但也容易被黑客用来破解软件。
总结:软件加壳技术是一种常用的软件保护手段,通过加密和封装原始可执行文件,增加软件的安全性和防破解能力。
加壳脱壳工具能够方便地实现对可执行文件的加壳和脱壳操作,但需要注意合理的加密算法和技术选型,以提高软件的安全性。
使用VC6.0创建工程

使用Microsoft Visual C++ 6.0
VC6程序开发的结构:
每次开发必须有一个workspace
一个workspace可以包含多个project
porject即工程,工程可以生成可执行文件(exe), 静态链接库(lib)和动态链接库(dll)以及其他一些 类型的程序文件
一个Project可以包含多个头文件(*.h)和实现文件(*.c), 不过整个工程至多只能有一个main函数
14
使用Microsoft Visual C++ 6.0
WorkSpace Project
.h .C .C ... Project
WorkSpace Project .c
工程唯一的main函数
15
使用Microsoft Visual C++ 6.0
对于大型程序的开发,把所有的代码放入 一个c文件显然是不合适的,VC++6.0的工 程管理结构可以帮助开发人员把大型程序 分散为多个逻辑部分,以便管理
.h----- 这种文件为头文件,包含的主要是 自定义数据类型、函数等的定义和声明放 置在头文件中。 .c----- 代码实现文件。
10
在VC++6.0中
.dsw---- Developer Studio Workspace,最高级别的配置 文件,记录了整个工作空间的配置信息,是一个纯文本 的文件,在vc创建新项目的时候自动生成。 .dsp---- VC开发环境生成的工程文件,文本格式。在VC 中,应用程序是以Project的形式存在的,Project文件的 扩展名为.dsp,在Workspace文件中可以包含多个Project, 由Workspace文件对它们进行统一的协调和管理,每个 工程都对应一个dsp文件。 .opt---- VC开发环境自动生成的用来存放WorkSpace中各 种选项的文件。工程关于开发环境的参数文件。如工具 条位置信息等。 .ncb----无编译浏览文件(no compile browser), NCB为 VC++自动创建的跟踪文件,其中存放了供ClassView、 WizardBar和Component Gallery使用的信息,由VC开发 环境自动生成。无编译浏览文件。当自动完成功能出问 题时可以删除此文件。build编译工程后会自动生成。
加壳和脱壳

解密(脱壳)技术的进步促进、推动了当时的加密(加壳)技术的发展。LOCK95和 BITLOK 等所谓的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像 LZEXE 之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把 EXE 文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩 EXE 文件的目的。接着,这类软件也越来越多, PKEXE、AINEXE、UCEXE 和后来被很多人认识的 WWPACK 都属于这类软件,但奇怪的是,当时我看不到一个国产的同类软件。
合为一体,很棒) 推荐language2000中文版,我的主页可下载
傻瓜式软件,运行后选取待侦测壳的软件即可(open)
3.软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)
通过上一节,我想大家己认识了什么是壳的概念了,也是说运行加壳程序时, 用户执行的实际上是这个外壳的程序,而这个外壳程序负责把用户原来的程序在内存中解压缩,并把控制权交还给解开后的真正的程序,由于一切工作都是在内存中运行,用户根本不知道也不需要知道其运行过程,只要执行起来没有变化就好。当时有些人担心这些解压缩的工作会给程序带来额外的运行时间,但实际上所有的可执行文件都要读到内存中去执行,文件小了,从计算机硬盘上读到内存的时间自然也少了,两下相抵,实际上用户并不会感觉程序慢了多少。脱壳的就是把在内存中真正还原的程序抓取下来,修正后变成可执行的文件。
过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护 EXE 文件不被动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。 MESS 、CRACKSTOP、HACKSTOP、TRAP、UPS 等等都是比较有名气的本类软件代表,当然,还有到现在还是数一数二的,由台湾同胞所写的 FSE 。其实以我的观点来看,这样的软件才能算是正宗的加壳软件。
c++ 插件的创建和使用实例

主题:C++ 插件的创建和使用实例C++ 是一种被广泛应用的编程语言,它的强大和灵活性使得它成为许多软件开发人员的首选。
在实际的软件开发过程中,我们常常会遇到需要扩展已有软件功能的需求。
这时候,C++ 插件就成为了一个非常有用的工具。
本文将介绍如何创建和使用 C++ 插件,并通过一个实际的例子来展示其用法。
一、C++ 插件的创建1. 确定插件功能在创建 C++ 插件之前,我们首先需要明确插件的功能。
我们希望创建一个 C++ 插件来实现数据加密和解密的功能。
2. 创建插件项目在开始编写插件代码之前,我们需要创建一个新的 C++ 项目。
可以使用诸如 Visual Studio、Code::Blocks 等集成开发环境来创建新的C++ 项目。
3. 编写插件代码在创建了新的 C++ 项目之后,我们就可以开始编写插件的代码了。
在这个例子中,我们可以编写加密和解密函数的实现代码。
4. 将插件编译为动态信息库编写完插件代码之后,我们需要将代码编译为动态信息库(DLL)。
这可以通过编译器提供的工具来实现,比如在 Windows 评台下可以使用 Visual Studio 的编译器来生成 DLL 文件。
5. 导出插件接口为了让其他程序能够调用我们创建的插件,我们需要在代码中导出插件的接口。
这可以通过在函数前添加 `extern "C"__declspec(dllexport)` 来实现。
6. 完成插件创建经过以上步骤,我们就成功地创建了一个 C++ 插件。
这个插件可以用于在其他程序中实现数据加密和解密的功能。
二、C++ 插件的使用实例现在我们来介绍一个实际的例子,来展示如何在一个主程序中使用我们创建的 C++ 插件。
1. 创建主程序项目我们需要先创建一个新的 C++ 项目作为我们的主程序。
同样地,我们可以使用集成开发环境来创建新的项目。
2. 引入插件头文件在主程序中,我们需要引入我们创建的插件的头文件,以便在程序中调用插件的功能。
c++ 加壳原理

c++ 加壳原理
加壳原理是指在应用程序运行之前,把应用程序的代码内核打包装入一个程序,从而形成一个包含内核的壳程序,在运行壳程序的时候,壳程序完成这样一系列的工作:解压出内核,校验合法性,提供程序运行环境以及防护等等,也就是说运行加壳程序实际上是运行加壳后的程序,而不是加壳前的程序。
使用 C++ 语言实现加壳原理,需要考虑以下几个步骤:
1、把目标程序的二进制可执行代码压缩到一个文件中。
2、在加壳程序中实现解压缩,把压缩的文件保存到加壳程序的内存中。
3、实现程序的校验,确保程序内容完整。
4、实现程序的加载,以及提供程序运行环境等等。
5、实现程序的防护,避免程序被破解。
C++ 语言实现加壳原理的函数步骤如下:
int main()
{
// 1.加载壳
char *pFileData = LoadShell();
// 2.解压壳
UnzipShell(pFileData);
// 3.校验文件
bool bIsValid = VerifyShell(pFileData);
// 4.提供程序运行环境
PrepareRunEnvironment();
// 5.运行程序
RunShell(pFileData);
// 6.防护程序
ProtectShell(pFileData);
return 0;
}
以上是 C++ 语言实现加壳原理的大致步骤,需要根据实际的需要,完善的实现加壳的每个环节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主要内容:生成界面,完成打开文件对话框。
首先说一下写作原因。最初学习加壳技术,网上确实能找到一些源代码,但90%的没有注释,所以很多代码都看不懂。即使某个函数大体功能知道,但其中的小细节由于没有注释,也不知道作者的用途是什么,所以这一过程相当痛苦。当时对于我来说,一个简单的加壳程序也是相当复杂。有时候想修改他们的程序,但程序结构牵一发而动全身,不得不放弃。有些程序前面90%的代码都在做铺垫和打基础,而最后的10%是合并功能,往往我们在分析前面的90%中的20%就没有耐心了,因为铺垫太多,让我们感觉没有成就感,感觉不到那么多代码是干嘛的。所以本文在写作时,每一部分都会实实在在的实现一部分功能,让我们有些成就感,这样才有兴趣。写此文是给像我一样想写壳却无从下手的人一个参考。不过本人现在也是研究阶段,能力有限,文章一方面是总结一下自己,另一方面也希望和大家多多交流。
修改属性后的控件ID和标题如下:
控件类型
ID值
标题
组框
IDC_STATIC
请选择文件
组框
IDC_STATIC
文件处理信息
按钮
IDC_BUTTON_OPENFILE
选择文件
按钮
IDC_BUTTON_PACKING
开始加壳
按钮
IDC_BUTTON_ABOUT
关于本程序
编辑框
IDC_EDIT_
无
Rich编辑框
AfxInitRichEdit();
//Standardinitializationﻫ //Ifyou are notusing these features andwishtoreduce the size
//of yourfinal executable, youshould remove from thefollowing
IDC_RICHEDIT_PROCINFO
无
对话框
IDD_PEPACKER_DIALOG
PEPacker V1.0
设置好的界面如下图所示:
现在按F7编译,CTRL+F5运行一下,发现程序好没有动静。什么反应也没有,如果把RichEdit删除掉,再编译,再运行就可以。
这个问题是由于RichEidt没有初始化引起的,微软的说法是要在APP的初始化函数中加入初始化函数在加入。
在classview视图中,展开CPEPackerApp类,双击InitInstance()函数,在AfxEnableControlContainer();后面添加代码AfxInitRichEdit();,添加后的函数代码如下:
BOOL CPEPackerApp::InitInstance()ﻫ{
AfxEnableControlContainer();
然后按F7组建(编译)程序,可以从IDE的提示窗口中看到是否生成成功,按CTRL+F5程序是能够正常运行的,不过是一个什么都没有的对话框。现在我们要添加元素了。
添加两个组框、一个编辑框、三个按钮、一个Rich编辑框。现在修改其属性。
在对话框上点击右键,选择“属性”,打开属性对话框,在对话框的左上角有个像钉子一样的图标,点击一下,这样属性对话框就会像钉子一样保持可见了,我们就不需要每修改一个控件属性的时候就点一下右键选择了。
// the specificinitializationroutines you do notneed.
此时再F7编译,CTRL+F5运行,就可以看到程序正常运行了。
再修改一下对话框的属性,右键,选择“属性”后,在“样式”标签中,勾选上“最小化框[N]”,这样对话框就可以最小化了。当然你还可以选择其它属性。
现在来添加成员变量。在编辑框上点击右键,选择“建立类向导……”,打开类向导对话框,然后选择“MemberVariables”标签。
注意Project:里面是否是PEPacker,Class name:里面是否是CPEPackerDlg,然后在ControlIDs:里面找到IDC_EDIT_,双击。或者点击右边的“AddVarible...”按钮,在“AddMember Varible”对话框中添加成员变量。变量名为"m_”,Category选择"Value”,变量类型选择"CString”,然后确定。用同样的方法给控件IDC_RICHEDIT_PROCINFO添加成员变量。变量名为m_RichEditProcInfo,注意category选择Control,变量类型为CRichEditCtrl。最后确定。
//TODO: Addyourcontrol notificationhandlercodehereﻫ
}
此时在此函数中添加如下代码:代码我会作注释。
ﻫvoidCPEPackerDlg::OnButtonOpenfile()ﻫ{ﻫ//TODO:Addyourcontrol notificationhandlercode hereﻫ//设置文件过滤,默认打开哪些文件类型,最后“||”结束。
双击“选择文件”按钮,弹出添加程序函数对话框,函数名你为:OnButtonOpenfile,我们确定即可,使用默认的,当然也可以修改。此时来到了PEPackerDlg.cpp文件中,界面默认的位置是刚刚添加的函数编辑处。代码如下:
voidCPEPackerDlg::OnButtonOpenfile()ﻫ{
壳的理论我就不多说了。一开始就说一大堆理论同样会使学习失去兴趣,我就喜欢边动手边理论。开始吧。
打开VC++6.0,新建工程,工程名称“PEPacker”,选择“MFC AppWizard(exe)”,下一步,选择基于对话框的应用程序。在对话框中删除默认的“确定”、“取消”按钮,还有默认的文本信息。如下图所示:
使用VC自己动手编写加壳程序
———————————————————————————————— 作者:
———————————————————————————————— 日期:
使用VC自己动手编写加壳程序
ﻫ阅读对象:想写壳的新手。高手掠过,本文仅限于写壳入门。
基本要求:了解VC++6.0基本使用方法;了解PE格式,不熟悉的地方能够通过查阅资料弄懂;