最近在看一个原代码时看到了这个。ClinetLoaderSize=27136; ClinetLoaderBuf:Array [0..27135] of Byte =
(
$4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00,
$B8,$00,$00,$00,$00,$00,$00,$00,$40,$00,$1A,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,
$BA,$10,$00,$0E,$1F,$B4,$09,$CD,$21,$B8,$01,$4C,$CD,$21,$90,$90,
$54,$68,$69,$73,$20,$70,$72,$6F,$67,$72,$61,$6D,$20,$6D,$75,$73,
$74,$20,$62,$65,$20,$72,$75,$6E,$20,$75,$6E,$64,$65,$72,$20,$57,
$69,$6E,$33,$32,$0D,$0A,$24,$37,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
仔细看了下十六进制,原来和其中的一个EXE一样。
想问下各位大大。怎么将一个EXE的十六进制弄成这种带$符号和,符号的文本呢?
本来打算一个个的敲的,后来想,一定有什么别的办法。
希望大家教教我////
(
$4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00,
$B8,$00,$00,$00,$00,$00,$00,$00,$40,$00,$1A,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,
$BA,$10,$00,$0E,$1F,$B4,$09,$CD,$21,$B8,$01,$4C,$CD,$21,$90,$90,
$54,$68,$69,$73,$20,$70,$72,$6F,$67,$72,$61,$6D,$20,$6D,$75,$73,
$74,$20,$62,$65,$20,$72,$75,$6E,$20,$75,$6E,$64,$65,$72,$20,$57,
$69,$6E,$33,$32,$0D,$0A,$24,$37,$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,
仔细看了下十六进制,原来和其中的一个EXE一样。
想问下各位大大。怎么将一个EXE的十六进制弄成这种带$符号和,符号的文本呢?
本来打算一个个的敲的,后来想,一定有什么别的办法。
希望大家教教我////
var
m_Stream : TFileStream;
m_OpenDlg : TOpenDialog;
m_FileName: string;
m_Buffer : Byte;
m_sTmp: string;
m_iTmp: DWORD;
begin
m_OpenDlg:= TOpenDialog.Create(nil);
try
if m_OpenDlg.Execute then
m_FileName:= m_OpenDlg.FileName
else
exit;
finally
FreeAndNil(m_OpenDlg);
end; m_Stream:= TFileStream.Create(m_FileName, fmOpenRead);
try
m_sTmp:= '';
for m_iTmp:= 0 to m_Stream.Size - 1 do //如果文件很大的话,可能会死掉,可以分成几个部分读取
begin
m_Stream.ReadBuffer(m_Buffer, 1);
m_sTmp:= m_sTmp + Format('$%.2u,', [m_Buffer]);
end; Memo1.Lines.Text:= m_sTmp;
finally
FreeAndNil(m_Stream);
end;
end;
我是从D7 中copy过来的,怎么可能编译不了?你新建一个工程,然后放一个按钮,放个TMemo控件,命名Memo1,双击按钮,在里面把我的函数体里面的内容(也就是下面的内容)copy进去再编译看看!var
m_Stream : TFileStream;
m_OpenDlg : TOpenDialog;
m_FileName: string;
m_Buffer : Byte;
m_sTmp: string;
m_iTmp: DWORD;
begin
m_OpenDlg:= TOpenDialog.Create(nil);
try
if m_OpenDlg.Execute then
m_FileName:= m_OpenDlg.FileName
else
exit;
finally
FreeAndNil(m_OpenDlg);
end; m_Stream:= TFileStream.Create(m_FileName, fmOpenRead);
try
m_sTmp:= '';
for m_iTmp:= 0 to m_Stream.Size - 1 do //如果文件很大的话,可能会死掉,可以分成几个部分读取
begin
m_Stream.ReadBuffer(m_Buffer, 1);
m_sTmp:= m_sTmp + Format('$%.2u,', [m_Buffer]);
end; Memo1.Lines.Text:= m_sTmp;
finally
FreeAndNil(m_Stream);
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinSkinData, OleCtrls, SHDocVw, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
WebBrowser1: TWebBrowser;
SkinData1: TSkinData;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
zf: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure botnet(var data; count: Cardinal; filename: string);
const
HexChar: PChar = '0123456789ABCDEF';
var
i: integer;
f: TextFile;
p: pchar;
line: string;
begin
p := @data;
line := '';
AssignFile(f, filename);
Rewrite(f);
for i := 0 to count - 1 do
begin
if (i mod 16 = 0) and (line <> '') then
begin
Writeln(f, line);
line := '';
end;
line := line + 'o' + HexChar[(Ord(p[i]) shr 4) and $F] +
HexChar[(Ord(p[i]) and $F)] + ',';
end;
if line <> '' then
Writeln(f, line);
CloseFile(f);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
edit1.Text := OpenDialog1.FileName;
end;Procedure TForm1.Button2Click(Sender: TObject);
var
FHOST: TMemoryStream;
begin
if (Edit1.Text = '') or (not FileExists(edit1.Text)) then
begin
ShowMessage('指定文件先!');
exit;
end;
if SaveDialog1.Execute then
begin
FHOST := TMemoryStream.Create;
try
FHOST.LoadFromFile(edit1.Text);
botnet(FHOST.memory^, FHOST.Size, SaveDialog1.FileName);
finally
FHOST.Free;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'EXE to TXT by BOTNET[FHost]';
WebBrowser1.Navigate('sxqiche.com');
end;end.
但是我想实现那个 begin
if (i mod 16 = 0) and (line <> '') then
begin
Writeln(f, line);
line := '';
end;
line := line + 'o' + HexChar[(Ord(p[i]) shr 4) and $F] +
HexChar[(Ord(p[i]) and $F)] + ',';
end;
那个line := line + 'o'这里的o自定义。想请教。怎么把edit2.text里输入的字符放到这个O这里。