游客您好
  • 点击联系客服

    在线时间:8:30-18:00

    客服微信

    Wkr-3000y-kf

    电子邮件

    3000y@wenkeruan.com
  • 手机版

    随时掌握游戏动态

  • 扫一扫二维码

    添加微信客服

Lv.5 解脱境
277号会员,0活跃值,2022.10.27 加入
  • 207发帖
  • 173主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
独家推荐 更多>

[安全工具] 千年加密解密代码(delphi)

[复制链接]
快要发癫啦 发表于 2023-2-14 11:29:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度..
+ i; q1 F7 o9 Z6 X6 s
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用)
, W  W& }5 P7 ^0 ~9 {

6 C7 n7 B1 i( O: i8 J5 i
声明部分
( B: u3 B# N, y( w
//二种声方法均可
! [6 @& V, n0 H2 c$ L1 |! a' u
//const gamestr:string[255] = ’N>TSVUJlwdcBMFjnAKb?qxvyeGzfLP=_ER@Z\am]ChgoWD;QuX[<tkpr^`iIHOYs.3" (- ’+chr(13)+’<;’+chr(12)+chr(00)+’=/!,1>#2$’+chr(39)+’89%’+chr(10)+chr(9)+’*):5&+67?40’; 7 U- F' u8 q0 s
const gamestr : array [0..127] of byte =
# D3 N# p: r3 v# B  F
($4E, $3E, $54, $53, $56, $55, $4A, $6C, $77, $64, $63, $42, $4D, $46, $6A, $6E,   $41, $4B, $62, $3F, $71, $78, $76, $79, $65, $47, $7A, $66, $4C, $50, $3D, $5F,  $45, $52, $40, $5A, $5C, $61, $6D, $5D, $43, $68, $67, $6F, $57, $44, $3B, $51,   $75, $58, $5B, $3C, $74, $6B, $70, $72, $5E, $60, $69, $49, $48, $4F, $59, $73,   $2E, $33, $1E, $01, $13, $22, $10, {&content}B, $28, $2D, $20, {&content}D, $19, $3C, $3B, $06,   $11, $1C, {&content}C, {&content}, $3D, $1D, $2F, $21, $03, $02, $05, $04, $2C, $31, $3E, $23,   $32, $24, $27, $38, $1F, $39, $25, $12, {&content}A, $09, $18, $1B, $2A, $29, $3A, {&content}E, $35, $07, $26, {&content}F, $2B, $36, $14, $37, $3F, $34, $30, $16, $08, $15, $17, $1A);     
2 c9 Z2 k: q  Z

3 p& {: f( A" Y7 u5 e& A# b
代码部分 ! q: t" e2 s5 y# W. `4 k
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密 8 z' M5 \. Z5 f- Y4 g0 \- z
var / x! {) i% b+ J( a6 G% U& B! V" B
   a1, d1: byte;
) X) [, x$ I: R
   j, count, di, si :integer; ! Z8 a: d% |) {! P, I. R
begin # ]7 }4 k, }) N& \
  decode := len div 4 * 3 ;  //返回解密后数据长度 3 c0 Y6 E$ E  [, m. |2 u: q+ A- L
  j := 0;
2 q( G- i- m, S0 k: @" C
  while i < len do . A1 s3 l2 w. k
    begin 2 ^+ }6 F# d' D, O" x* A
      d1 := byte (inchar[j] ); $ `! S5 l; X' w6 m. I8 `+ Q
      if ( d1 = $3B ) or (d1 = $7A) then
% {% w8 F5 ?  A1 E9 O
        begin , d: m0 v) e( X- |3 B
        end; 7 \4 D; Y" _1 c8 ?$ w3 L
      d1 := d1 and {&content}FF; / G( l' N, T! T1 D! M' {+ O
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] ); 8 v# N, w8 _" [" g* i" d
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法 + g/ y0 O" F# k* S" i% `$ \& e
      inc (i);
; t! Q- p' c( Q3 F, d5 P
    end; ! K; r# g. u& C

! t: k7 H9 B: U! [' ]2 V
  di := 0 ; # U9 T3 G& }! ]4 [" @# d
  si := 0 ;   ) d5 q) D3 q3 r- ~0 ?
  count := len div 4 ;                        //循环次数 6 j# H. U/ E( X' Y% |+ f
  for j := 1 to count do
0 Z2 U4 W# U- L) G
    begin 6 f4 T, r1 E- U+ G/ y" g; R5 {
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个)
3 Q5 V8 W' ^2 \- W/ V6 i  V
      a1 := a1 shl 2 ;
+ k- u/ W# u8 w4 d* R( W# k
      d1 := ord ( inchar [di + 1]); & o2 T- S$ N0 Z% F# ~# D& l1 `% _
      d1 := d1 shr 4 ;
4 q9 x! M* G: ~( K& n7 n
      a1 := a1 or d1 ;
* F+ q$ \2 ~& E
      outchar[si] := chr (a1);
2 {0 ?& B) j- a4 U' a  W) e9 c6 C- L

, j+ J, o' \$ G: n1 X7 Z2 p
      a1 := ord ( inchar [di + 1]);
7 L) ]: z* K  s! P6 h- `
      a1 := a1 shl 4 ;
/ Z! k( P% ?, l7 N
      d1 := ord ( inchar [di + 2]); ' A% M5 _" X. \8 s3 J
      d1 := d1 shr 2 ;
( X; ~: v7 A. S( e
      a1 := a1 or d1 ;
, v: ~( i! G! B9 x4 m  S' s
      outchar[si + 1] := chr (a1);
3 g* H$ J- q$ I9 e( x
   
% v8 q; E/ g8 f1 r" k4 v! M) j
      a1 := ord ( inchar [di + 2]);
9 A% `4 ^. N5 H. K1 o3 L
      a1 := a1 shl 6 ;
- a9 u% b* |4 Q* i, _
      d1 := ord ( inchar [di + 3]);
( x! Z  i4 e3 b9 D2 i0 u
      a1 := a1 or d1 ;
  \1 J, K9 f2 A+ V, l% p% F2 S
      outchar[si + 2] := chr (a1);
" x; _8 @9 w0 Z. {; M

9 K. j* b, W9 M  ^) t
      di := di + 4 ;     
: }- V; G# |. P$ C) \" r
      si := si + 3 ;
8 P) K" |* X, x3 X, f0 t2 V
  end;
7 O2 \8 o" t( W+ r" l" S* K$ n
end; 2 ^# C* D& m- n

4 [  c. ~% v- W  X+ c7 O
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密 + v0 z8 D# _! H5 |4 `( ]8 Z8 l; N# r7 Y
var , ^7 N& Q* I8 g; B6 F. p
  a1, d1 :byte; % n) ^/ h0 P% `! ^( ]* }4 a5 U
  j,count,di,si :integer; . V- i# Q' c' V3 r/ \% K! n

3 U  l" _7 Z$ k2 e/ n
begin , s  r2 Y% N: @+ @% t% e' f7 w4 m% \
  encode := len div 3 * 4 ;  //返回加密后数据长度
. y7 ]5 u6 l4 W5 p3 p
  di := 0 ;
' p9 k6 _- p* Q" L  b; `" }8 d2 b3 J
  si := 0 ;
& x% L" k9 G6 q! c) I( q
  count := len div 3;           //定义循环次数 + c; i2 @! r/ r0 u# y5 k, U
  for j := 1 to count do
4 G% }& t) m& N4 |5 V+ r
    begin # A# i8 z) W  w1 K
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个 2 |. M0 `1 z. d9 {9 p5 Q
    a1 := a1 shr 2 ; , i, t6 d, [( `. a+ M
    outchar [si] := chr (a1);
; ], n2 G! i+ \
* R! C( w3 Q7 M
    a1 := ord (inchar[di]);
4 k& u) v/ B+ K. u+ o
    a1 := a1 and 3 ; ( }; ~2 C0 G, G8 H# l$ ]2 d5 m# z  I
    a1 := a1 shl 4 ;
" y# \/ i% j8 k$ B% K
    d1 := ord (inchar[di +1]);
& B4 Q6 S! x8 j1 K1 Y+ i
    d1 := d1 shr 4 ;
8 I5 ]- U2 Z* V" `. F; A6 g
    a1 := a1 or d1 ;
, ]$ q$ H6 ^& E, q
    outchar[si +1] := chr (a1) ; 1 r; _3 T4 f" A+ o# y
1 S& f" v' x) @& o8 t, E) L
    a1 := ord ( inchar[di + 1]) ; 5 f2 [+ `  f7 p5 C# M
    a1 := a1 and {&content}F ;
7 }+ W2 m/ Q3 ]
    a1 := a1 shl 2 ; 3 r- b( a# K: g4 }2 P
    d1 := ord ( inchar[di + 2]) ;
/ X' g! Z8 c) F! p% t9 e# |
    d1 := d1 shr 6 ;
3 J! y; V6 {& s3 M
    a1 := a1 or d1 ;
1 e) o. W& I8 C: ?* \
    outchar[si + 2] := chr (a1);
$ S7 z) A" j2 Z

- n% X0 l( Z5 S3 @' i7 ?. a
    a1 := ord ( inchar[di + 2]) ;
. J& G5 ?+ o  b  S5 e2 i) x
    a1 := a1 and $3F; " g" ?0 U; q& @7 A
    outchar[si + 3] := chr (a1) ;
3 p$ E3 A( Q; T$ Y7 m) R# c7 M/ r% k
* Q; ]# r* B! g( y% B, \# x
    //第二次转换
9 f" u: I! [& W% L1 F: K$ V
    d1 := ord ( outchar [si]);          //第 1 个 ; z1 M3 J+ m3 n2 g# c! S
    d1 := gamestr [d1]; ; q% ^+ d& E6 l$ e- {& F1 V2 S9 _# E
    outchar [si] := chr (d1);
4 r( G" B+ ^+ f; u. k/ f/ Z

' r9 _+ J0 X2 Z% N. |% n
    d1 := ord ( outchar [si + 1]);          //第 2 个 & N' d+ ^  Q& b6 B0 ~' H
    d1 := gamestr [d1]; 6 B8 F( N8 c, u" I& s
    outchar [si + 1] := chr (d1);
! t! k6 x8 h! I" J
. N- [( [/ @0 A& G, P  u
    d1 := ord ( outchar [si + 2 ]);          //第 3 个 0 l/ L  m2 D8 N! x4 L/ q! m
    d1 := gamestr [d1];
% i6 T* s! G3 q
    outchar [si + 2] := chr (d1);
6 g6 g) L# a' i% f
" j/ E3 B( A- [
    d1 := ord ( outchar [si + 3]);          //第 4 个
' B" W8 u( V$ ^7 i" K
    d1 := gamestr [d1];
& X9 T- h" [# b9 X8 b! H7 t" w' e
    outchar [si + 3] := chr (d1);
# H  ]& z" I- p  p1 ]( K* \6 w) H

9 t6 x" y9 @7 c- {
    di := di + 3 ;
7 l1 z7 I% N0 o0 C, w
    si := si + 4 ;     % @( t2 }/ O. O" `, r7 {
    end;
8 U* w# w2 d4 Q) |7 a) S3 S( P
end;
7 I6 M; u  r  Z3 N5 x  N
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

Powered by Discuz!X3.4 ©2001-2013 Comsenz Inc.闽公网安备 35099902000100号增值电信业务经营许可证 闽B2-20220593 闽ICP备2023014375号