Project1

标题: 一款游戏的加密工具RGSS Enction 即将上市 [打印本页]

作者: feicx    时间: 2015-4-18 18:45
标题: 一款游戏的加密工具RGSS Enction 即将上市

这是一款好用的RGSS加密工具,现在没有独立加密的工具,而网站提供的方法又容易破解,于是我用易语言编了一个这样的程序,马上就要上市了,先给大家发上一个图片与视频吧。
这是视频,可以下载来看看。
录像5.part1.rar (2 MB, 下载次数: 173) 录像5.part2.rar (1.57 MB, 下载次数: 162)

视频.part1.rar

2 MB, 下载次数: 271

视频.part2.rar

226.29 KB, 下载次数: 117


作者: feicx    时间: 2015-4-18 18:46
请下录像5
作者: taroxd    时间: 2015-4-18 18:48
「上市」这个词真的是这么用的么……?
作者: 判约之轮    时间: 2015-4-18 19:45
虽然感觉会很有用……但是上市?我记得这是有限责任公司发行股票,或者开始有偿出售某一样商品才会用到的词汇

可以看出来这是一种目录封装软件,那么可以介绍一下相对于CSDN上的加密打包算法,这个软件有何优势?
而且根据视频,这个软件只支持RMVX,那么是否意味着已经针对RMVX做了加密操作?以后是否会支持RMVA?
好吧如果我理解错了,上面两行就当我是在梦呓了
作者: feicx    时间: 2015-4-19 08:52
会支持的,当前只是在测试,一旦发布,都会支持的,以后的版本还可以支持想66RPG一样的网络验证的。
作者: 英顺的马甲    时间: 2015-4-19 13:49
LZ的产品正式"上市"之后不久就会有人出破解了,相信我==
作者: 上贺茂润    时间: 2015-4-19 15:11
任何加密都有被破解的可能吧
作者: zeldafd    时间: 2015-4-19 18:58
本帖最后由 zeldafd 于 2015-4-19 23:05 编辑

其實個人一直有一個很白目的加密順序, 先用serialize, 再base64一次, 再用discuz的加密法, 然後再用gzip壓縮一次,
最後當成字串, 直接把他放到一個檔尾為dll的偽dll檔案內

@taroxd
就是這個函數:
PHP 代码复制
  1. /**
  2.  * $string 明文或密文
  3.  * $operation 加密ENCODE或解密DECODE
  4.  * $key 密鑰
  5.  * $expiry 密鑰有效期
  6.  */
  7. function  authcode( $string , $operation  = 'DECODE' , $key  = '' , $expiry  = 0) {
  8.     // 動態密匙長度,相同的明文會生成不同密文就是依靠動態密匙
  9.     // 加入隨機密鑰,可以令密文無任何規律,即便是原文和密鑰完全相同,加密結果也會每次不同,增大破解難度。
  10.     // 取值越大,密文變動規律越大,密文變化= 16 的$ckey_length 次方
  11.     // 當此值為0 時,則不產生隨機密鑰
  12.     $ckey_length  = 4;
  13.  
  14.     // 密匙
  15.     // $GLOBALS['discuz_auth_key'] 這裡可以根據自己的需要修改
  16.     $key  = md5( $key  ? $key  : $GLOBALS [ 'discuz_auth_key' ]);
  17.  
  18.     // 密匙a會參與加解密
  19.     $keya  = md5( substr ( $key , 0, 16));
  20.     // 密匙b會用來做數據完整性驗證
  21.     $keyb  = md5( substr ( $key , 16, 16));
  22.     // 密匙c用於變化生成的密文
  23.     $keyc  = $ckey_length  ? ( $operation  == 'DECODE'  ? substr ( $string , 0, $ckey_length ): substr (md5(microtime()), - $ckey_length )) : '' ;
  24.     // 參與運算的密匙
  25.     $cryptkey  = $keya .md5( $keya . $keyc );
  26.     $key_length  = strlen ( $cryptkey );
  27.     // 明文,前10位用來保存時間戳,解密時驗證數據有效性,10到26位用來保存$keyb(密匙b),解密時會通過這個密匙驗證數據完整性
  28.     // 如果是解碼的話,會從第$ckey_length位開始,因為密文前$ckey_length位保存動態密匙,以保證解密正確
  29.     $string  = $operation  == 'DECODE'  ? base64_decode ( substr ( $string , $ckey_length )) : sprintf( '%010d' , $expiry  ? $expiry  + time() : 0). substr (md5( $string . $keyb ), 0, 16). $string ;
  30.     $string_length  = strlen ( $string );
  31.     $result  = '' ;
  32.     $box  = range(0, 255);
  33.     $rndkey  = array ();
  34.     // 產生密匙簿
  35.     for ( $i  = 0; $i  <= 255; $i ++) {
  36.         $rndkey [ $i ] = ord( $cryptkey [ $i  % $key_length ]);
  37.     }
  38.     // 用固定的算法,打亂密匙簿,增加隨機性,好像很複雜,實際上並不會增加密文的強度
  39.     for ( $j  = $i  = 0; $i  < 256; $i ++) {
  40.         $j  = ( $j  + $box [ $i ] + $rndkey [ $i ]) % 256;
  41.         $tmp  = $box [ $i ];
  42.         $box [ $i ] = $box [ $j ];
  43.         $box [ $j ] = $tmp ;
  44.     }
  45.     // 核心加解密部分
  46.     for ( $a  = $j  = $i  = 0; $i  < $string_length ; $i ++) {
  47.         $a  = ( $a  + 1) % 256;
  48.         $j  = ( $j  + $box [ $a ]) % 256;
  49.         $tmp  = $box [ $a ];
  50.         $box [ $a ] = $box [ $j ];
  51.         $box [ $j ] = $tmp ;
  52.         // 從密匙簿得出密匙進行異或,再轉成字符
  53.         $result  .= chr (ord( $string [ $i ]) ^ ( $box [( $box [ $a ] + $box [ $j ]) % 256]));
  54.     }
  55.     if ( $operation  == 'DECODE' ) {
  56.         // substr($result, 0, 10) == 0 驗證數據有效性
  57.         // substr($result, 0, 10) - time() > 0 驗證數據有效性
  58.         // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 驗證數據完整性
  59.         // 驗證數據有效性,請看未加密明文的格式
  60.         if (( substr ( $result , 0, 10) == 0 || substr ( $result , 0, 10) - time() > 0) && substr ( $result , 10, 16) == substr (md5( substr ( $result , 26). $keyb ), 0, 16)) {
  61.             return  substr ( $result , 26);
  62.         } else  {
  63.             return  '' ;
  64.         }
  65.     } else  {
  66.         // 把動態密匙保存在密文裡,這也是為什麼同樣的明文,生產不同密文後能解密的原因
  67.         // 因為加密後的密文可能是一些特殊字符,複製過程可能會丟失,所以用base64編碼
  68.         return  $keyc . str_replace ( '=' , '' , base64_encode ( $result ));
  69.     }
  70. }
  71.  
  72.  
  73. $a  = "www.test.com" ;
  74. $b  = authcode( $a , "ENCODE" , "abc123" );
  75. echo  $b . "<br/>" ;
  76. echo  authcode( $b , "DECODE" , "abc123" );
  77. ?>

作者: 流浪杰哥    时间: 2015-4-20 20:44
本帖最后由 流浪杰哥 于 2017-11-22 18:58 编辑

还没上市吗
作者: 欧买歌    时间: 2015-4-21 22:08
建议楼主添加解密功能,添加个加密密码,打开原加密工具输入加密密码即可解密。
万一有一天忘记备份那就惨了。
话说楼主准备好迎接新RM工具的到来吧。
作者: summer92    时间: 2015-4-22 10:27
不经常变动的加密,应该有被破解的可能,还有 什么 ”易语言“? 大丈夫?
作者: ky52879    时间: 2015-4-22 17:54
很好奇作者的原理是什么?是仿照RM系列默认的加密将所有的音乐、图片等打包在一起吗?还是简单的自解压呢?
PS:我没看录像,如果是自解压,我就只能无语了。。。
作者: 两个人的嬉闹    时间: 2015-8-12 00:11
zeldafd 发表于 2015-4-19 18:58
其實個人一直有一個很白目的加密順序, 先用serialize, 再base64一次, 再用discuz的加密法, 然後再用gzip壓 ...

请问这个要怎么用呢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1