用内存流 文件流 资源生成客户端(Delphi开源)
正文:
很多木马生成器就是用的内存流和文件流生成客户端的,
废话不多说了,代码如下:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Inifiles;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
msgtitle: TEdit;
GroupBox2: TGroupBox;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Inifile:TInifile;
implementation
{$R *.dfm}
{$R Client.RES}
procedure TForm1.Button1Click(Sender: TObject);
var
File1,File2:TFileStream;
Size:integer;
Files:string;
exe:tresourcestream;
begin
if (msgtitle.Text='') or (memo1.Text='') then
begin
Application.MessageBox('标题或内容不能为空!','错误');
exit;
end
else
begin
exe:=tresourcestream.Create(hinstance,pchar('myexe'),'exe');
exe.SaveToFile('Client.exe');
IniFile:=TIniFile.Create(ExtractFilePath(paramstr(0))+'Config.ini');
IniFile.WriteString('msg','msgtitle',msgtitle.Text);
IniFile.WriteString('msg','msgtext',memo1.Text);
IniFile.Free;
Files:=ExtractFileDir(Application.ExeName)+'\config.ini';
File1:=TFileStream.Create(ExtractFileDir(Application.ExeName)+'\Client.exe',fmOpenWrite);
File2:=TFilestream.Create(Files,fmOpenRead);
try
File1.Seek(0,soFromEnd);
File1.CopyFrom(File2,0);
Size:=File2.Size+SizeOf(Size);
File1.WriteBuffer(Size,SizeOf(Size));
Application.MessageBox('客户端已经生成!','提示');
Finally
File1.Free;
File2.Free;
exe.Free;
DeleteFile(Files);
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.
这是服务端部分↑
{$APPTYPE CONSOLE}
uses
windows,SysUtils,messages,inifiles,Classes,Forms;
var
Inifile:Tinifile;//INI
Files:string;//配置文件
Des:TFileStream;//资源
size:integer;//资源大小
FileMemo:TMemorystream;//文件内存流对象
s:TStrings;
begin
Files:=ExtractFilePath(Application.ExeName)+'\Config.ini';//读取配置文件
FileMemo:=TMemoryStream.Create;
Des:=TFileStream.Create(Application.ExeName,fmShareDenyNone);
try
des.Seek(-sizeof(size),soFromEnd);
des.ReadBuffer(size,sizeof(size));
des.Seek(-Size,soFromEnd);
FileMemo.CopyFrom(Des,size-sizeof(size));
FileMemo.SaveToFile(Files);
finally
FileMemo.Free;
des.Free;
Inifile:=Tinifile.Create(Files);
s:=TStringlist.Create;
IniFile.ReadSections(s);
Application.MessageBox(PChar(Inifile.ReadString('msg','msgtext','')),PChar(Inifile.ReadString('msg','msgtitle','')));
deletefile(files);
Inifile.Free;
end;
end.
这是客户端部分↑
用内存流 文件流 资源生成客户端(Delphi开源)的更多相关文章
- 节点流(文件流) FileInputStream & FileOutputStream & FileReader & FileWriter
节点流(文件流) FileInputStream(字节流)处理视频类的 FileOutputStream(字节流) FileReader(字符流)处理文本文件 ...
- io流-文件流\节点流
FileOutputStream类(jdk1.0) 描述 java.io.FileOutputStream 类是文件字节输出流,用于将数据写入到文件中. 构造方法 //构造方法 FileOutputS ...
- 使用kbmmw 生成客户端delphi函数原型
前面我们讲了使用swagger 生成java,php 的客户端调用函数原型. 对于delphi,其实很遗憾,不能直接生成客户端函数原型代码. 不要紧,解铃还须系铃人,既然是kbmmw 自己生成的,我们 ...
- csv内存流文件流
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 文件流FileStram类
本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...
- .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)
.NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...
- C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)
一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...
- -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流
File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...
- 文件_ _android从资源文件中读取文件流并显示的方法
======== 1 android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...
随机推荐
- ORA-00845 Oracle 启不来修改 MEMORY_TARGET
1.内存减小导致Oracle启动不了 Last login: Sun Nov 4 15:09:06 2012 from 192.168.5.222 [oracle@h1 ~]$ sqlplus ...
- iOS UIView非常用方法及属性详解
在调用视图的 Quartz 调用都可以正确地在视图中描画. 视图对象通过 bounds .和 center 属 性声明来跟踪自己的大小和位置.frame 属性包含一个矩形,即边框矩形,用于指定 ...
- Qt程式异常崩溃处理技巧(Win)
这篇文章谈的是 Qt4 程式在视窗系统下的异常崩溃处理技巧.所以须要在头文件里包括"#include <Windows.h>". 首先,程式难免会有异常崩溃的时候.重要 ...
- C# 中datagridview行里面有三个cheeckbox,要控制成三选一。
我之前有试过在cellendedit中处理,可以达成效果,当不符合用户打单的界面要求.该事件是在单元格编辑结束之后, 当用户选中两个checkbox,且焦点不移开时,界面上会出现有两个checkbox ...
- PendingIntent.getBroadcast第四个参数flags
(1) android.app.PendingIntent.FLAG_UPDATE_CURRENT 如果PendingIntent已经存在,保留它并且只替换它的extra数据. (2) android ...
- filter过滤器的使用
从J2EE1.3开始,Servlet2.3规范中加入了对过滤器的支持.过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种,下面让我们分别来看看这四种过滤器的工作方式: 1.reques ...
- Acitivity的一些属性配置
转自:http://blog.csdn.net/javayinjaibo/article/details/8855678 1.android:allowTaskReparenting 这个属性用来标记 ...
- 为什么要用BASE64
BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输.更具体地说,BASE64算法主要用于转换二进 制数据为ASCII字符串格式.Java语言提供了一个非常好的 ...
- oracle scn浅析
1. 系统SCN号 查询系统SCN号的方法: select dbms_flashback.get_system_change_number from dual commit后系统SCN号会增长,但是即 ...
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在曾经的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本的语法 ...