日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > [置頂] 關于cocos2dx手游lua文件加密的解決方案

[置頂] 關于cocos2dx手游lua文件加密的解決方案

來源:程序員人生   發布時間:2014-12-01 08:00:06 閱讀次數:3443次
       很多使用cocos2dx+lua做游戲的同學,都會想到1個問題,我的游戲1旦發布,怎樣才能保證的我腳本代碼不被破解,不泄漏代碼。雖然這和開源、同享的原則不合,但是代碼也是coder的勞動成果,理應得到保護。特別是商業游戲更是如此,不希望被他人破解掉源碼并且進行修改。
  今天的話題就是如何實現lua腳本文件的加密和解密。
  我在網絡上查過,解決方案http://www.ijiami.cn/appprotect_mobile_games然后我經過斟酌以后,總結出兩種解決方案,供大家參考。
  1、輕量級的解決方案,APK打包之前,用工具把所有的lua文件加密,具體是將lua文件讀到內存,然后使用zip等緊縮加密庫進行緊縮加密,然后將緊縮加密以后的數據保存為和源文件同名的文件。打包以后運行lua文件的時候,則先讀出lua數據,然落后行解密,將解密后的流數據傳給lua虛擬機。
  2、重量級的解決方案,此方案是上1種方案的擴大,也是商用游戲的方案,實現1個游戲文件包,打包前將資源和腳本都使用工具打包到1個文件,可以在打包的時候加密緊縮,也能夠不加密緊縮。然后在運行的時候直接從包內讀出相應文件的數據,然后解密解緊縮,然后提供給游戲引擎使用。這也是端游普遍使用的技術,手游目前大部份也開始使用此技術。
  本文主要扼要講授第1種方案,第2種方案則有時間再寫1篇博客。好了,我們開始進入正題吧。
  首先是緊縮lua文件,代碼以下:
  int write_file_content(const char* folder){
  //取得文件數據,并緊縮文件
  FILE* fpin = fopen(folder, "wb+");
  if (fpin == NULL)
  {
  printf("沒法讀取文件: %s ", folder);
  return 0;
  }
  //得到文件大小
  fseek(fpin, 0, SEEK_END);
  unsigned int size = ftell(fpin);
  //讀出文件內容
  fseek(fpin, 0, SEEK_SET);
  void* con = malloc(size);
  int r = fread(con, size, 1, fpin);
  //進行加密操作
  unsigned long zip_con_size = size * 2;
  void* zip_con = malloc(zip_con_size);
  if (Z_OK != compress((Bytef*)zip_con, &zip_con_size, (Bytef*)con, size)){
  printf("緊縮 %s 時產生毛病 ",folder);
  }
  printf("%s 緊縮前大小:%ld 緊縮后大小:%ld ", folder, size, zip_con_size);//寫文件內容
  fseek(fpin, 0, SEEK_SET);
  int len = fwrite(zip_con, zip_con_size, 1, fpin);//釋放資源
  fclose(fpin);
  free(zip_con);
  free(con);
  return 0;
  }
  復制代碼
  然后是解密操作,代碼以下:
  void* read_file_content(const char* folder, int& bufflen){
  FILE* file = fopen(folder, "wb+");
  if (file)
  {
  {
  printf("沒法讀取文件: %s ", folder);
  return 0;
  }
  //獲得文件大小
  fseek(file, 0, SEEK_END);
  unsigned int size = ftell(file);
  //讀出文件內容
  void* con = malloc(size);
  fseek(file, 0, SEEK_SET);
  int len = fread(con, size, 1, file);
  //解緊縮操作
  unsigned long zip_size = size * 4;
  void* zip_con = malloc(zip_size);
  int code = uncompress((Bytef*)zip_con, &zip_size, (Bytef*)con, size);if (Z_OK != code)
  {
  printf("解壓 %s 時產生毛病 :%d ", folder, code);return 0;
  }
  //釋放資源
  fclose(file);
  free(con);
  //zip_con由外部釋放
  bufflen = zip_size;
  return zip_con;
  }
  復制代碼
  最后就把此流文件塞給lua的虛擬機便可,即以流方式運行lua代碼。
  對Android app,dex源碼文件安全性是最重要的,因此,這個dex源碼加密保護其實很有必要,在這個方面,可以做到的有愛加密這個平臺,不同類型的利用也有不同的加密保護方案,詳細可以在這里了解: http://www.ijiami.cn/appprotect_mobile_games修改lua的文件加載器,自定義lua文件加載
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产毛片av | 欧美日韩亚洲国产综合 | 国产精品久久久久久久av大片 | 欧美a区 | 日韩欧美国产成人 | 91网页入口 | 亚洲精品电影网在线观看 | 黄色的网站在线观看 | 在线精品一区二区 | 快射视频在线观看 | 欧美日韩亚洲国内综合网 | www.麻豆| 91网国产在线观看 | 日本aa大片在线播放免费看 | 国产精品一区二区av | 国产网站在线免费观看 | 在线观看成人av | 视频一区国产精品 | 黄色国产网站 | 91成人在线播放 | 欧美一级黄色网 | 黄色大片免费在线观看 | 亚洲综合精品 | 久久久久久一区二区三区四区别墅 | 国产成人精品一区二 | 欧美怡红院视频一区二区三区 | 国产精品久久久久一区二区三区 | 91亚洲成人 | 日韩精品一二三区 | 久久久精品国产 | 99精品在线观看视频 | 九九热在线视频观看这里只有精品 | 久久久免费精品视频 | 一级性a| 美日韩av| 久久久久国产精品一区三寸 | 97国产一区二区精品久久呦 | 成人久久 | 国产免费av一区二区三区 | 九九综合九九 | 国产精选视频 |