最新文章
热门文章
新华字典词典2009注册码序列号破 
使用VC自己动手编写加壳程序(1)— 
黑鹰VIP破解视频教程(好东西) 
使用VC自己动手编写加壳程序(3)— 
使用VC自己动手编写加壳程序(5)— 
使用VC自己动手编写加壳程序(6)— 
使用VC自己动手编写加壳程序(4)— 
使用VC自己动手编写加壳程序(2)— 
天草破解班视频教程 初级中级高级 
ASPack 2.001 -> Alexey Solodov 
当前位置:李露的博客 >> 黑客学堂 >> 浏览文章
使用VC自己动手编写加壳程序(6)——在壳代码中添加MessageBox并运行
更新日期:2009年04月04日  来源:本站原创  作者:天漏客   访问次数:次  【字体:

文章标题:使用VC自己动手编写加壳程序(6)——打造自己的壳
主要内容:修改程序OEP,使之从壳代码段开始运行,弹出MessageBox后,再运行正常程序。
基本要求:了解VC++6.0基本使用方法;了解PE格式,不熟悉的地方能够通过查阅资料弄懂;
阅读对象:想写壳的新手。高手掠过,本文仅限于写壳入门。
文章类型:原创
文章作者:天漏客 QQ:285252760
完成日期:2009年04月4日
作者主页:www.lilu.name
文章地址:www.lilu.name/Html/heikexuetang/2009-4/6851859376886.html
文章说明:允许转载,但最好注明转载出处。

上次内容是在文件中新添加了一个区段,本次内容将修改添加区段后的文件OEP,使程序从新区段先运行,然后再跳到正常的程序运行。程序运行时会先弹出一个MessageBox对话框,然后正常运行程序。本次内容将详细讲解使用VC程序添加MessageBox对话框。

完成本功能,主要是两大模块。一是修改OEP为壳代码段的运行地址。二是将MessageBox的代码写入壳代码段中。我们知道在VC中编写的函数,经编译器编译后就变成了二进制机器代码,CPU执行的就是机器码。所以现在的问题是将MessageBox函数的代码放入壳代码段中。

修改程序OEP,只需要在EidtHeader函数中增加功能即可,在函数最后面添加修改OEP代码,如下所示。

//修改PE文件头信息,主要是区块个数和镜像大小
void CPEPackerDlg::EditHeader()
{
…………………………
 //文件镜像增加
 dwSizeOfImage=SectionHeaderOfShell.VirtualAddress+SectionHeaderOfShell.Misc.VirtualSize;
 //新区段虚拟大小暂定为0xFFF(4095Bytes),除以0x1000(4096Bytes)目的是为了内存对齐。
 //dwSizeOfImage=(dwSizeOfImage+0x1000)/0x1000 * 0x1000;
 pOptionalHeader->SizeOfImage=dwSizeOfImage;

 //修改程序OEP
 pOptionalHeader->AddressOfEntryPoint=SectionHeaderOfShell.VirtualAddress;
 
}

在壳代码段开头添加跳转到OEP的代码

发表评论】【告诉好友】【打印此文】【收藏此文】【关闭窗口
上一篇:使用VC自己动手编写加壳程序(5)——给程序添加一个区段 下一篇:PEncrypt 4.0 Gamma / 4.0 Phi -> junkcode脱壳手记

Copyright 2006-2012 Powered by LiLu.NAME,李露的博客 All Rights Reserved.
E-Mail:lilu.name#gamil.com(注意是gmail,自己改) QQ:285252760
苏ICP备08016526号