zoukankan      html  css  js  c++  java
  • 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。

    代码
    procedure EncryptMemory(Data: Pointer; Size: Cardinal);
      
    procedure EncryptData(var A, B: DWORD);
      
    var
        _Constant, i: DWORD;
      
    begin
        _Constant :
    = 0;
        
    for i := 0 to 31 do
        
    begin
          _Constant :
    = _Constant - $61C88647;
          A :
    = A + (((B shr 5+ $2B4805C2) xor ((B shl 4+ $98DFF541) xor (B + _Constant));
          B :
    = B + (((A shr 5+ $D8144BA5) xor ((A shl 4+ $01AF979B) xor (A + _Constant));
        
    end;
      
    end;

    var
      i: Integer;
      _Data1, _Data2: Dword;
    begin
      
    for I := 0 to (Size div 8- 1 do
      
    begin
        _Data1 :
    = Pdword(dword(Data) + (i * 8))^;
        _Data2 :
    = Pdword(dword(Data) + (i * 8+ 4)^;
        EncryptData(_Data1, _Data2);
        Pdword(dword(Data) 
    + (i * 8))^ := _Data1;
        Pdword(dword(Data) 
    + (i * 8+ 4)^ := _Data2;
      
    end;
    end;      

    procedure DecryptMemory(Data: Pointer; Size: Cardinal);
      
    procedure DecryptData(var A, B: DWORD);
      
    var
        _Constant, i: DWORD;
      
    begin
        _Constant :
    = $C6EF3720;
        
    for i := 0 to 31 do
        
    begin
          B :
    = B - (((A shr 5+ $D8144BA5) xor ((A shl 4+ $01AF979B) xor (A + _Constant));
          A :
    = A - (((B shr 5+ $2B4805C2) xor ((B shl 4+ $98DFF541) xor (B + _Constant));
          _Constant :
    = _Constant + $61C88647;
        
    end;
      
    end;
    var
      i: Integer;
      _Data1, _Data2: Dword;
    begin
      
    for I := 0 to (Size div 8- 1 do
      
    begin
        _Data1 :
    = Pdword(dword(Data) + (i * 8))^;
        _Data2 :
    = Pdword(dword(Data) + (i * 8+ 4)^;
        DecryptData(_Data1, _Data2);
        Pdword(dword(Data) 
    + (i * 8))^ := _Data1;
        Pdword(dword(Data) 
    + (i * 8+ 4)^ := _Data2;
      
    end;
    end;



    //使用
    procedure TfrmMain.btn1Click(Sender: TObject);
    var
      memStream: TMemoryStream;
    begin
      memStream :
    = TMemoryStream.Create;
      memStream.LoadFromFile(
    '.\732');
      DecryptMemory(memStream.Memory, memStream.Size);
      memStream.SaveToFile(
    '.\732_u');
      FreeAndNil(memStream);
    end;
  • 相关阅读:
    PLSQL_Oracle Trigger触发器的基本概念和用法
    PLSQL_Oracle Object所有数据库对象类型汇总和简解(概念)
    OAF_EO系列2
    OAF_EO系列1
    OAF_OAF Debug And Log调试和记录工具的详解(案例)
    OAF_OAF Exception Handling异常处理(概念)
    DBA_FND Load程式迁移工具介绍和应用(案例)
    Form_Form标准控件Folder开发解析(案列)
    BEvent_标准BusinessEvent用以监控供应商的修改(案例)
    PLSQL_Oracle Logon Trigger的建立
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1717590.html
Copyright © 2011-2022 走看看