⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reg.pas

📁 面对面 木马生成器 完整代码 程序仅提供测试学习 全局钩子查找句柄截获 使用ASP收信 收信地址明文(测试而已没加密) //本软件主要是截获账号和密码 带了个简单发信
💻 PAS
字号:
unit Reg;

interface

uses
	windows;

	procedure AddValue(Root:HKEY;StrPath:pchar;StrValue:pchar;Strdata:pchar;DataType:integer);
	procedure DelValue(Root:HKEY;StrPath:pchar;StrValue:pchar);
	procedure DelSub(Root:HKEY;StrPath:pchar;StrSub:pchar);
	function ReadValue(Root:HKEY;StrPath:pchar;StrValue:pchar):String;
	function ValueExists(Root:HKEY;StrPath:pchar;StrValue:pchar):Boolean;
	function KeyExists(Root:HKEY;StrPath:pchar;StrSub:pchar):Boolean;
	function GetValueName(Root:HKEY;StrPath:pchar;var Str:String):integer;
	function GetKeyName(Root:HKEY;StrPath:pchar;var Str:String):integer;

implementation

uses
   RejoiceBase;

function CreateKey(Root:HKEY;StrPath:pchar):Hkey;
var TempKey:HKey;Disposition:Integer;
begin
	TempKey:=0;
	RegCreateKeyEx(Root, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);
	Result:=TempKey;
end;

function OpenKey(Root:HKEY;StrPath:pchar):Hkey;
var TempKey:Hkey;
begin
	TempKey:=0;
	RegOpenKeyEx(Root,StrPath,0,KEY_ALL_ACCESS,TempKey);
	Result:=TempKey;
end;

procedure AddValue(Root:HKEY;StrPath:pchar;StrValue:pchar;Strdata:pchar;DataType:integer);
var
  S: Hkey;
  DataSize: Integer;
begin
	s := CreateKey(Root, StrPath);
  DataSize:= length(Strdata);
	RegSetValueEx(S, StrValue, 0, REG_SZ, Strdata, DataSize);  //
	RegCloseKey(s);
end;

procedure DelValue(Root:HKEY;StrPath:pchar;StrValue:pchar);
var s:Hkey;
begin
	s:=OpenKey(Root,StrPath);
	RegDeleteValue(s,StrValue);
	RegCloseKey(s);
end;

procedure DelSub(Root:HKEY;StrPath:pchar;StrSub:pchar);
var
  s: Hkey;
  i: integer;
  SubKey: string;
begin
  i:=1;
  SubKey:='';  //2000里删除目录,一定要下面为空才能删除
  while i<=99 do begin
  	if keyexists(Root,Pchar(StrPath+'\'+StrSub), PChar(IntToStr(i))) then begin
  		SubKey:=IntToStr(i);
      s:=OpenKey(Root,Pchar(StrPath+'\'+StrSub));
			RegDeleteKey(s,Pchar(SubKey));
      RegCloseKey(s);
  	end else break;//如果不存就出错了,出错就跳出了,..就是退出,如果用break;下面没有的话,就不执行,下面的代友,???
  	i:=i+1;
  end;

	s:=OpenKey(Root,StrPath);
	RegDeleteKey(s,StrSub);
	RegCloseKey(s);
end;

function ReadValue(Root:HKEY;StrPath:pchar;StrValue:pchar):String;
var s:Hkey; ValueType:DWORD; MyData: array[0..255] of char; dLength: DWORD;
begin
	ValueType:=REG_SZ;
	s:=OpenKey(Root,StrPath);
	dLength := SizeOf(MyData);
	if RegQueryValueEx(s,StrValue,nil,@ValueType,@MyData[0],@dLength)=0 then begin
		Result:=MyData;
		RegCloseKey(s);
	end else begin
		Result:='';
		RegCloseKey(s);
	end;
end;

function ValueExists(Root:HKEY;StrPath:pchar;StrValue:pchar):Boolean;
var s:Hkey; ValueType:DWORD;
begin
	ValueType:=REG_SZ;
	s:=OpenKey(Root,StrPath);
	Result:=RegQueryValueEx(s,StrValue,nil,@ValueType,nil,nil)=0;
	RegCloseKey(s);
end;

function KeyExists(Root:HKEY;StrPath:pchar;StrSub:pchar):Boolean;
var s:Hkey; Str:String;
begin
	if StrPath<>nil then
		Str:=Strpath+'\'+StrSub else Str:=StrSub;
	s:=OpenKey(Root,pchar(Str));
	Result:=s<>0;
	if s<>0 then RegCloseKey(s);
end;

function GetValueName(Root:HKEY;StrPath:pchar;var Str:String):integer;
var s:Hkey;
    Count:integer;
    ValueName:array[0..100] of char;
    BufSize,dType,dLength:DWORD;
    IData: array[0..255] of char;
begin
	Count:=0;
	BufSize:=100 ;
	dLength:=254;
	s:=OpenKey(Root,StrPath);

	if s<>0 then begin
 		while RegEnumValue(s,Count,ValueName,BufSize,nil,@dType,@iData,@dLength)=0 do begin
  		BufSize:=100;
  		dLength:=254;
  		Str:=Str+ValueName+',';
  		Count:=Count+1;
 		end;
 		RegCloseKey(s);
	end;
	if copy(Str,1,1)=',' then delete(Str,1,1);
	if copy(Str,Length(str),1)=',' then delete(Str,Length(str),1);
	Result:=Count;
end;

function GetKeyName(Root:HKEY;StrPath:pchar;var Str:String):integer;
var s:Hkey;
    Count:integer;
    BufSize:DWORD;
    ValueName:array[0..100] of char;
begin
	Count:=0;
	BufSize:=100;
	s:=OpenKey(Root,StrPath);
	if s<>0 then begin
  	while RegEnumKeyEx(s,Count,ValueName,BufSize,nil,nil,nil,nil)=0 do begin
   		BufSize:=100;
   		Str:=Str+ValueName+',';
   		Count:=Count+1;
    end;
  	RegCloseKey(s);
	end;
	if copy(Str,Length(str),1)=',' then delete(Str,Length(str),1);
	Result:=Count;
end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -