游客您好
  • 点击联系客服

    在线时间: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 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度.. 6 Q$ y7 H" H3 X* R
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用)
+ I! d3 G! g) g- e) m, _

' u  C9 X  z# E0 c2 y8 t6 T
声明部分 2 r0 v. q& d( p) c0 ~: r) v
//二种声方法均可 - V' i3 r0 E' N* Q0 \
//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’; 0 o& f8 `  q% L$ m( g0 @& E
const gamestr : array [0..127] of byte = ( J+ I4 o( g( ]; U6 H+ k
($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);     
/ X. \" u( [; r; `" x2 D% U+ v

4 K! L  m0 x8 n' [
代码部分 3 W, E. t7 s' i& v% W; [  r1 g
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密 ; q) U- Z) {# K  o; Z
var : C9 X) _+ r% \% x. Q% a. V$ i" O
   a1, d1: byte;
; u. S$ W% d% W0 ?" ^2 r+ ]3 ^
   j, count, di, si :integer;
8 |$ ^1 m7 E- e9 g- k# F+ h5 J; [6 B
begin 5 L! ?3 S9 ?; `5 ~
  decode := len div 4 * 3 ;  //返回解密后数据长度 9 P( ?9 I2 e2 ^2 _  c; b
  j := 0; 6 G; {; z) l9 J8 {3 \
  while i < len do / e' U' i0 E+ |: N4 f; D
    begin / O" R) b0 X: V
      d1 := byte (inchar[j] );
" r9 e; w3 |; Z8 u1 a
      if ( d1 = $3B ) or (d1 = $7A) then
! y. d5 a1 `5 w1 J) b' I: K
        begin
$ t$ }3 R9 P; j" @) S
        end;
2 C) k; x: @$ I$ W6 l* K
      d1 := d1 and {&content}FF; - J. A. |/ K% P9 n
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] ); 8 ?3 z3 `' @% g  d) L7 F% x  ~
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法
$ I! ^& u2 F1 E7 O# u2 B" S5 ]
      inc (i); 6 s$ ^0 ^2 q/ Z5 M! i8 i
    end;
" e3 ~! h$ @3 F+ f4 E: Y

9 q, E0 H0 A* b$ R2 y
  di := 0 ; , [1 c1 h4 h+ _
  si := 0 ;   
, o$ t. W5 `+ ~* c9 N/ ^
  count := len div 4 ;                        //循环次数 * ~4 @0 h. D# B/ A$ h" S- }4 {
  for j := 1 to count do # j1 U, l3 D8 i% t, v; o! j: r
    begin 4 }! Q% I3 w. `1 @# j( h
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个) * w1 i" n8 e$ u
      a1 := a1 shl 2 ;
# q; I% D1 k# v
      d1 := ord ( inchar [di + 1]); % p" w6 Z2 \0 l. M9 v+ b
      d1 := d1 shr 4 ;
' ^2 f1 D& p/ a' V! ^' b; ]' w
      a1 := a1 or d1 ;
* z& n4 f  ~( V7 C8 ?
      outchar[si] := chr (a1); 9 S, r/ ?! B& d

7 s" E( l4 r/ }3 }( O. w
      a1 := ord ( inchar [di + 1]); - \/ u) _6 K9 Z2 t% P& B- f
      a1 := a1 shl 4 ;
2 T# k0 {( C2 W+ X
      d1 := ord ( inchar [di + 2]); ( t5 m; k  e0 G/ l$ W) z
      d1 := d1 shr 2 ; * B7 w4 a! U% F5 V6 _. z8 v
      a1 := a1 or d1 ; + O9 G' x+ ^/ W" U- z% V& z
      outchar[si + 1] := chr (a1); 7 ]8 z8 l# N, l3 r& S
   
% a( \* k1 a  j7 L
      a1 := ord ( inchar [di + 2]);
+ f# ^* u; o* Y, n% |: e
      a1 := a1 shl 6 ;
" f. @8 p9 ~; f
      d1 := ord ( inchar [di + 3]);
9 |8 |7 M6 a2 H* c
      a1 := a1 or d1 ;
  k. e* w( m( \$ m, b: ?6 w1 C: F
      outchar[si + 2] := chr (a1); ; l! `+ D& k" k3 ]3 v2 E1 d

+ r, f6 ?; S  h  n1 R" K
      di := di + 4 ;     5 ?2 `5 a% Y: L$ b3 l0 h  X1 g
      si := si + 3 ; $ r/ l8 F: D. ?# E
  end;
( ?; \, n7 d- |( X$ }9 @" }  {
end;
/ q% r% t7 s) t8 _; M$ R

% H" i$ r' @' c
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密 2 \' r$ p3 q# _
var
* h' W, r0 G( f
  a1, d1 :byte;   Y! o5 ~- ?9 ^# L+ \0 S
  j,count,di,si :integer; 5 i  y6 ]8 D2 }) i' J- @* ]7 _

, H0 |2 g# G0 i3 S. S6 ?7 n1 M' w
begin
' T, W/ V* l" V7 z
  encode := len div 3 * 4 ;  //返回加密后数据长度
0 E! J7 R* u4 P8 g$ A
  di := 0 ; . L* d+ g+ _& v" Q  H: O# ~! _
  si := 0 ;
0 |* Q- Q' }# c- K. J5 a# [
  count := len div 3;           //定义循环次数 1 N5 B  W% }' K* {: s" K8 C3 R4 T
  for j := 1 to count do ' a: S. S! I4 P7 N& D
    begin 0 N, Z0 F. G8 g5 F& |, H$ g
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个 3 z1 ~+ J% N* G0 P9 K( r( n" ?) ~
    a1 := a1 shr 2 ; - a( r* B# |' }, F3 h- S
    outchar [si] := chr (a1); 3 U. m' u( c+ f! F! n
& T1 X" ^0 d2 i: T% v
    a1 := ord (inchar[di]);
3 y0 g3 I$ K  T8 |! r
    a1 := a1 and 3 ;
2 h& [0 l9 @+ o( w
    a1 := a1 shl 4 ;
- }% w# q8 ~# n7 C5 G) a
    d1 := ord (inchar[di +1]);
! Z& d; ]% f% g5 t0 N
    d1 := d1 shr 4 ;
( r, ]) u' N9 g
    a1 := a1 or d1 ;
  g4 d4 n& X1 q& v3 K7 i
    outchar[si +1] := chr (a1) ;
/ C. U7 T+ ?8 x% x* z
+ ], f7 [+ d0 g& E/ j0 j
    a1 := ord ( inchar[di + 1]) ;   {/ D" r" r. i2 l$ \/ l7 `$ V" R1 g
    a1 := a1 and {&content}F ;
: K5 W! R" z7 L% u
    a1 := a1 shl 2 ;
# J8 }6 L1 G0 ?; a( J, K
    d1 := ord ( inchar[di + 2]) ;
2 F# P. S3 a6 v; y9 s/ E# H9 v" b
    d1 := d1 shr 6 ;
; n0 k2 V6 m) X1 \. [; ~$ P, o
    a1 := a1 or d1 ;
+ \6 B$ E8 A9 Z
    outchar[si + 2] := chr (a1); 9 m6 h2 {; ]7 ]: B" E, @! X

& `5 I6 s- L; c+ |  e
    a1 := ord ( inchar[di + 2]) ;
% C8 L+ I; g9 j- H
    a1 := a1 and $3F; % e; g1 r1 m: ?8 l
    outchar[si + 3] := chr (a1) ;
: y& x5 a4 E+ u* N

( J' i# b2 _, d8 ?9 `4 l. I
    //第二次转换
; N+ Y$ \* ]. P. P4 C
    d1 := ord ( outchar [si]);          //第 1 个
9 Q  @0 M& Y) \  H  K5 j8 ?
    d1 := gamestr [d1];
7 }- v3 r$ K$ {/ N% o- u8 l: j
    outchar [si] := chr (d1); / V0 i! I$ [3 I) v& h

! p# p, J- l- F8 S2 L. v0 O  Y8 Q4 n
    d1 := ord ( outchar [si + 1]);          //第 2 个
! B& }8 z  a4 F4 l) D' V1 |
    d1 := gamestr [d1]; + l6 Q* G! L# [; e, W7 [' c- _5 a
    outchar [si + 1] := chr (d1); ! o4 P% \9 t. C, E  L

8 j6 @. p8 k7 B& I& U
    d1 := ord ( outchar [si + 2 ]);          //第 3 个 # d  a; n$ w9 j* e* c
    d1 := gamestr [d1];
3 _# K7 Y% g  b9 z
    outchar [si + 2] := chr (d1);
9 w5 v& K' B$ A/ n9 F

" P; P; c( @4 j7 G3 m
    d1 := ord ( outchar [si + 3]);          //第 4 个   P+ K5 \8 U3 g/ t& \
    d1 := gamestr [d1];
& p' T2 u; ~+ o0 T6 y: U! G
    outchar [si + 3] := chr (d1); $ g0 D6 J3 b7 z% L1 e: V

- O; ]3 v, \% S+ e
    di := di + 3 ;
% y0 k9 _: z7 ^& a9 f
    si := si + 4 ;     
8 F: Q5 ]2 s( b7 B1 R/ Q" U- r) h
    end;
( x7 t9 H: h! Y0 N; }/ p4 B
end;
, b1 L# _4 S/ o, E& z! T4 I& p+ J
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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