日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

delphi 字符串加密收集

 ZLM_圖書館 2014-03-20

昨天看見了甲殼蟲那里關(guān)于遠程控制的免殺,其中用加密字符串來躲過殺軟,還有個叫“小壞”的發(fā)了個遠控的源碼,里面有個“JIEMIDE“的函數(shù),居然刪除了,起始加密函數(shù)都差不多,我們只要自己寫個就可以,現(xiàn)在到網(wǎng)上收集幾個,還有那灰鴿子里面有個加密的模塊,也可以調(diào)用,奇怪的是,我昨天找了FF115那個遠控里的加密函數(shù),試驗了點東西,我的卡巴2010版居然報毒呵呵!看來要自己寫加密函數(shù)了。

這里就收集幾個,大家自己去擴展思路吧!

我重來不玩遠控那東西,只是感覺這個好玩,連什么惡意程序都沒寫過,就是感覺這個比較好玩,呵呵!
遠控里的東西,也不難理解,至于寫遠控,看了大家的都是堆積木,沒太大的技術(shù)含量,基本都是改來改去,沒什么技術(shù)含量了,菜鳥們拿去做免殺。其實只要自己稍微知道編程,免殺就很好做,至于一些經(jīng)驗之談,網(wǎng)上都有,大家就拿來堆積木就是了。真正的高手是自己去探索新的思路,至于我這種小鳥,不是吃那飯的,隨便玩下!呵呵。。。

function   Encode(Str:String):String;
var//加密
TmpChr:AnsiChar;
i,Len:integer;
begin
Result:=Str;
Len:=Length(Result);
TmpChr:=Result[1];
    for   i:=1   to   Len-1   do
    Result[i]:=Result[i+1];
    Result[Len]:=TmpChr;
end;

function   Decode(Str:String):String;
var//解密
TmpChr:AnsiChar;
i,Len:integer;
begin
          Result:=Str;
          Len:=Length(Result);
          TmpChr:=Result[Len];
   for   i:=Len   DownTo   2   do
   Result[i]:=Result[i-1];
   Result[1]:=TmpChr;
end;

///////////////////////

功能:字符串加密和解密

作用:可用作密碼的和一些重要參數(shù)的保存,數(shù)據(jù)經(jīng)加密后保存即使被人看到了也無防。

首先定義一個常量數(shù)組

const

       XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$84,$47); //字符串加密用

然后在程序里加入以下兩個函數(shù),具體用法就不用多說了吧!

function Enc(Str:String):String;//字符加密函數(shù)   這是用的一個異或加密
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) do
    begin
      Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);
      j:=(j+1) mod 8;
    end;
end;

function Dec(Str:String):String;//字符解密函數(shù)
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) div 2 do
    begin
      Result:=Result+Char(StrToInt('$'+Copy(Str,i*2-1,2)) xor XorKey[j]);
      j:=(j+1) mod 8;
    end;
end;

function   Crypt(s:   string;   Key:   Word;
      const   bEncrypt:   boolean):   string;  
const  
      SeedA   =   787;   ///   常量,你可以修改
      SeedB   =   787;   ///   常量,你可以修改
var
      i:   integer;  
      ps,   pr   :   ^byte;  
begin  
      if   bEncrypt   then
          s   :=   s+#0;
      SetLength(Result,   Length(s));
      ps   :=   @s[1];
      pr   :=   @Result[1];
      for   i   :=   1   to   length(s)   do
      begin
          pr^   :=   ps^   xor   (Key   shr   8);
          if   bEncrypt   then  
              Key   :=   (pr^   +   Key)   *   SeedA   +   SeedB
          else
              Key   :=   (ps^   +   Key)   *   SeedA   +   SeedB;
          pr   :=   pointer(integer(pr)   +   1);
          ps   :=   pointer(integer(ps)   +   1);
      end;
end;

///////////////////

1.

function EncrypStr(Src, Key: String): String;//字符串加密函數(shù)
//對字符串加密(Src:源 Key:密匙)
var KeyLen :Integer;
    KeyPos :Integer;
    offset :Integer;
    dest :string;
    SrcPos :Integer;
    SrcAsc :Integer;
    Range :Integer;
begin
   KeyLen:=Length(Key);
   if KeyLen = 0 then key:='delphi';
   KeyPos:=0;
   Range:=256;
   Randomize;
   offset:=Random(Range);
   dest:=format('%1.2x',[offset]);
   for SrcPos := 1 to Length(Src) do
      begin
         SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
         if KeyPos < KeyLen
         then KeyPos:= KeyPos + 1
         else KeyPos:=1;
         SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
         dest:=dest + format('%1.2x',[SrcAsc]);
         offset:=SrcAsc;
      end;
   Result:=Dest;
end;
end;

function UncrypStr(Src, Key: String): string;//字符串解密函數(shù)
//對字符串解密(Src:源 Key:密匙)
var KeyLen :Integer;
    KeyPos :Integer;
    offset :Integer;
    dest :string;
    SrcPos :Integer;
    SrcAsc :Integer;
    TmpSrcAsc :Integer;
begin
   KeyLen:=Length(Key);
   if KeyLen = 0 then key:='delphi';
   KeyPos:=0;
   offset:=StrToInt('$'+ copy(src,1,2));
   SrcPos:=3;
   repeat
      SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
      if KeyPos < KeyLen
      Then KeyPos := KeyPos + 1
      else KeyPos := 1;
      TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
      if TmpSrcAsc <= offset
      then TmpSrcAsc := 255 + TmpSrcAsc - offset
      else TmpSrcAsc := TmpSrcAsc - offset;
      dest:=dest + chr(TmpSrcAsc);
      offset:=srcAsc;
      SrcPos:=SrcPos + 2;
   until SrcPos >= Length(Src);
   Result:=Dest;
end;

//***************************************************************************************

2.

//********************************************************
//             加密解密 (利用異或運算)    (方式2)          
//********************************************************

function encryptstr(const s:string; skey:string):string;//加密
var
    i,j: integer;
    hexS,hexskey,midS,tmpstr:string;
    a,b,c:byte;
begin
    hexS   :=myStrtoHex(s);
    hexskey:=myStrtoHex(skey);
    midS   :=hexS;
    for i:=1 to (length(hexskey) div 2)   do
    begin
        if i<>1 then midS:= tmpstr;
        tmpstr:='';
        for j:=1 to (length(midS) div 2) do
        begin
            a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
            b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
            c:=a xor b;
            tmpstr := tmpstr+myStrtoHex(chr(c));
        end;
    end;
    result := tmpstr;
end;

function decryptstr(const s:string; skey:string):string;//解密
var
    i,j: integer;
    hexS,hexskey,midS,tmpstr:string;
    a,b,c:byte;
begin
    hexS :=s;//應(yīng)該是該字符串
    if length(hexS) mod 2=1 then
    begin
        showmessage('密文錯誤!');
        exit;
    end;
    hexskey:=myStrtoHex(skey);
    tmpstr :=hexS;
    midS   :=hexS;
    for i:=(length(hexskey) div 2) downto 1 do
    begin
        if i<>(length(hexskey) div 2) then midS:= tmpstr;
        tmpstr:='';
        for j:=1 to (length(midS) div 2) do
        begin
            a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
            b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
            c:=a xor b;
            tmpstr := tmpstr+myStrtoHex(chr(c));
        end;
    end;
    result := myHextoStr(tmpstr);
end;

delphi 字符串加密收集 - Blueboy - Blueboys blog

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多