MyException - 我的异常网
当前位置:我的异常网» Delphi » 怎么将一个EXE文件读入内存,并在内存中启动它

怎么将一个EXE文件读入内存,并在内存中启动它

www.MyException.Cn  网友分享于:2013-03-25  浏览:125次
如何将一个EXE文件读入内存,并在内存中启动它?
大家好!

我希望做一个应用程序,这个程序在启动的时候可以要求用户输入一个注册的用户名和密码,如果检查通过,则启动一个应用程序。这个应用程序不是一个磁盘文件,而是被加密存储到我的EXE文件尾部。
请问大家:
1、如何从自身的EXE中提取出这个EXE文件的内容?
2、如何将提取出来的这个EXE文件内容,作为应用程序启动起来?(不能释放到磁盘上再启动,因为这样可能会被用户复制出来,加以利用)。
谢谢!


------解决方案--------------------
占个沙发
------解决方案--------------------
顶一下

友情占楼
------解决方案--------------------
占个位置,记得以前看到过,查一下
------解决方案--------------------
实质上就是加壳,现在网上这方面的资料不少
你得去研究一下PE格式和汇编
主要思路是在被加密程序作为Section写入另一个exe,
在需要的地方跳转到被加密程序的入口地址

------解决方案--------------------
文件捆绑机。遇到高手还是能找出来
------解决方案--------------------
学习
------解决方案--------------------
不用这样吧。直接把功能写道你的exe中间不好么?

你参考一下upx的做法吧
------解决方案--------------------
文件加壳...

{加壳}
procedure TForm1.LockFile;
var
FsName, FtName, FbName, FCode: string;
iTargetFile, iSourceFile: Integer;
MyBuf: array[0..MaxBufferSize - 1] of Char;
LockedFile: TLockedFile;
NumRead, NumWritten: Integer;
bSuccessed: Boolean;
begin
BusyStatus;
FsName := sExeFilename;

FbName := FsName + '.TMP ';

FCode := ExtractFilePath(paramstr(0))+ 'DialogPass.exe ';
if not fileexists(FCode) then
raise exception.create(FCode+ '文件没找到. ');


if CheckBox1.Checked then
begin
CopyFile(FsName, FbName);
end;
iSourceFile := FileOpen(FsName, fmOpenRead or fmShareDenyNone);
try
with LockedFile do
begin
Flag := CFlag;
Name := ExtractFileName(FsName);
Caption := ' ';
Password := StringEncrypt(sPassword);
AdditionalCodeLen := GetFileSize2(FCode);
end;

FtName := ExtractFilePath(FsName) + '__ ' + LockedFile.Name;
// showmessage(ftname);
CopyFile(FCode, FtName);


bSuccessed := False;
iTargetFile := FileOpen(FtName, fmOpenReadWrite);
try

FileSeek(iTargetFile, 0, soFromEnd);
repeat
NumRead := FileRead(iSourceFile, MyBuf, SizeOf(MyBuf));
NumWritten := FileWrite(iTargetFile, MyBuf, NumRead);
until (NumRead = 0) or (NumWritten <> NumRead);

FileWrite(iTargetFile, LockedFile, SizeOf(LockedFile));
bSuccessed := True;
showmessage( 'Encryption successful ');
finally
FileClose(iTargetFile);
end;
finally
FileClose(iSourceFile);
end;
if bSuccessed then
begin
DeleteFile(FsName);
RenameFile(FtName, FsName+ '.exe ');
end;
// FileAddShellOrNot(EditFileName.Text);
end;

------解决方案--------------------
to楼主

可以使用,不过你要另外写一个程序来作为外壳,用这个外壳程序跳到你的主程序
------解决方案--------------------
外壳程序有一个文件大小,将,外壳的文件大小作为加壳后的偏移量,在外壳中读偏移量后的内容
这样执行出来的就是你的主程序了
------解决方案--------------------

文章评论

写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
鲜为人知的编程真相
鲜为人知的编程真相
每天工作4小时的程序员
每天工作4小时的程序员
中美印日四国程序员比较
中美印日四国程序员比较
漫画:程序员的工作
漫画:程序员的工作
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员应该关注的一些事儿
程序员应该关注的一些事儿
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
10个调试和排错的小建议
10个调试和排错的小建议
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
为什么程序员都是夜猫子
为什么程序员都是夜猫子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
老程序员的下场
老程序员的下场
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
那些争议最大的编程观点
那些争议最大的编程观点
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的鄙视链
程序员的鄙视链
总结2014中国互联网十大段子
总结2014中国互联网十大段子
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
Java程序员必看电影
Java程序员必看电影
旅行,写作,编程
旅行,写作,编程
我是如何打败拖延症的
我是如何打败拖延症的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
我的丈夫是个程序员
我的丈夫是个程序员
如何成为一名黑客
如何成为一名黑客
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员必看的十大电影
程序员必看的十大电影
编程语言是女人
编程语言是女人
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
 程序员的样子
程序员的样子
程序员都该阅读的书
程序员都该阅读的书
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
代码女神横空出世
代码女神横空出世
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有