cocos2d加密
⑴ 使用cocos2d開發的手游安裝包比較大,如何改善
解決方法有三種:
一:優化圖片、資源,壓縮安裝包體積,犧牲一部分手游品質減小安裝包體積,這也是比較常見的一種方法;
二:分包技術,資源切割,分段下載,進入游戲前進行二次下載。
三:愛加密的手游壓縮技術,通過拆分資源,在保障了游戲品質和游戲體驗流暢的情況下,實現資源後台自動載入,最高可以壓縮80%。
以上三種解決方法中,愛加密的手游壓縮技術是比較完美的一種,既沒有影響游戲品質,又可以完美分包,不用二次下載,保障了良好的用戶體驗。
⑵ Cocos2d-JS服務端和客戶端的通信怎麼加密和解密
4.客戶端用伺服器端的公鑰加密DES密鑰Key,得到Key_enc並發送給伺服器端;5.伺服器端用私鑰SK對客戶端發送的Key_enc進行解密,得到Key;6.伺服器端用Key對收到
⑶ app加密,app可以加密嗎app加密是什麼技術
可以加密。先來說一下一些常用的加密方法:
偽加密
偽加密是Android4.2.x系統發布前的加密方式之一,通過java代碼對APK(壓縮文件)進行偽加密,其修改原理是修改連續4位位元組標記為」P K 01 02」的後第5位位元組,奇數表示不加密偶數表示加密。
雖然偽加密可以起到一定防破解作用,但也會出現問題,首先使用偽加密對其APK加密後市場無法對其進行安全檢測,導致部分市場會拒絕這類APK上傳;其次,偽加密的加密方式和解密方式也早已公布導致它的安全程度也大大降低;再次,Android4.2.x系統無法安裝偽加密的APK;最後偽加密只是對APK做簡單保護,在java層源碼加殼保護、核心so庫、資源文件、主配文件、第三方架包方面卻沒有任何保護處理。注意:高版本不支持這樣的方法,所以還是不要嘗試使用這樣的加密方式了。
混淆保護
把原來有具體含義的類名,變數名,方法名,修改成讓人看不懂的名字,例如方法名getUserName編程了方法名
破解:耐心
運行時驗證
運行時驗證,主要是指在代碼啟動的時候本地獲取簽名信息然後對簽名信息進行檢驗來判斷自己的應用是否是正版,如果簽名信息不是正版則提示盜版或者直接崩潰。當然你可以把必要的數據放在伺服器端。
破解:找到smali文件中,判斷是否相等的部分。改為常量true,即失效。
總之,反編譯一些apk之後,只要是java代碼寫的總會有smil文件。對於smil文件,如果耐心讀的話,還是可以查看到一些關鍵代碼的。
相較於應用來說,游戲apk因為採用cocos2d-x 或者 unity3D,採用的是c++ 和c# 編寫的跨平台程序,在apk採用JNI的方式。所以沒有smali,可以防止靜態被破解apk包。
當然游戲包apk 在運行的時候,會把.*so載入到內存中。動態也是可以在內存中抓取相應的數據。只不NDK 相對於smali破解來說,根部不是一個層級的關系。
⑷ 如何使用友盟 Cocos2d-x 分享組件實現 Android/iOS 分享功能
首先我簡單介紹一下組件壓縮包的組成
Cocos2dx
實現Cocos2d-x中跨平台分享功能,需拷貝到您項目的Classes文件夾中;
Platforms
原生的Android和iOS社會化組件SDK,需要您將庫和資源拷貝到對應平台的項目中;
doc
組件的集成文檔;
Umeng_Cocos2dx_Demo_V1.0
Android部分的demo文件,可以安裝在手機上看一下簡單的分享效果和樣式
Cocos2d-x雖然是一個跨平台的引擎,但是對於Android和IOS平台來說,具體的集成方式還是有一定的區別,這里分別介紹Android和IOS平台集成中不同的地方,然後再集中介紹跨平台通用的部分。
Android平台集成步驟:
步驟一:
下載Cocos2d-x組件(下載地址) 並且將jar包添加到build path 路徑下,將res資源文件夾加入到你工程對應資源文件下。將Platforms/Android/controller目錄下的com文件夾拷貝到您的Cocos2d-x項目Android平台的src目錄下,並且在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否則會編譯出錯) :
../../Classes/Cocos2dx/Android/CCUMSocialController.cpp \
../../Classes/Cocos2dx/ShareButton/UMShareButton.cpp \
../../Classes/Cocos2dx/Common/CCUMSocialSDK.cpp
步驟二:
在Cocos2dxActivity子類的onCreate方法下添加如下代碼,用來完成初始化步驟
// this為Cocos2dxActivity類型, 參數2為描述符,可隨意修改.
CCUMSocialController.initSocialSDK(this, "com.umeng.social.share");
步驟三:
在代碼中覆寫Cocos2dxActivity子類的onActivityResult方法,用來實現回調方法。在onActivityResult添加如下代碼 :
// 授權回調
CCUMSocialController.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
iOS平台集成步驟:
步驟一:
解壓SDK壓縮包,將Platforms/iOS文件夾和Cocos2dx文件夾拖入工程目錄,並刪除Cocos2dx/Android文件夾,添加後應該是這個效果:
步驟二:
添加系統需要的framework
Security.framework //用於系統加密處理
libiconv.dylib //QQ互聯的庫文件
SystemConfiguration.framework //QQ互聯需要的framework
CoreGraphics.framework //QQ互聯需要的framework
Social.framework //分享組件需要的framework,如果不使用twitter則不需要
libsqlite3.dylib //QQ互聯需要的framework
libstdc++.dylib //C++的庫文件
CoreTelephony.framework //QQ互聯需要的framework
libz.dylib //QQ互聯需要的framework
Accounts.framework //系統需要的framework,如果不使用twitter則不需要
步驟三:
實現系統的回調方法,在Xcode工程中的ios文件夾下的AppController.mm文件中加入下面的代碼:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [UMSocialSnsService handleOpenURL:url];
}
完成了上述准備工作之後,就可以開始正式的分享步驟了,友盟提供了多種分享樣式,有精力的開發者可以使用底層介面,可以完全自由定製分享界面和樣式,不過相信大部分開發者們使用第三方插件的初衷都是為了節省精力,所以這里就只介紹使用默認分享界面的方法,有更多需求的開發者們可以自己探索自定義界面介面部分。
步驟一:加入系統需要的頭文件
// 授權回調
#include "Cocos2dx/Common/CCUMSocialSDK.h"
#include "Cocos2dx/ShareButton/UMShareButton.h"
// 使用友盟命令空間
USING_NS_UM_SOCIAL;
// ...... 代碼省略
// HelloWorld為cocos2d::CCLayer的子類
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
}
步驟二:分享按鈕的創建
// 創建分享按鈕, 參數1為按鈕正常情況下的圖片, 參數2為按鈕選中時的圖片,參數3為友盟appkey, 參數4為分享回調
UMShareButton *shareButton = UMShareButton::create("shareNormal.png","shareSelected.png", "你的友盟appkey", share_selector(shareCallback)) ;
步驟三:設置分享平台及內容
// 顯示在友盟分享面板上的平台
vector
* platforms = new vector
();
platforms->push_back(SINA);
platforms->push_back(RENREN) ;
platforms->push_back(DOUBAN) ;
platforms->push_back(QZONE) ;
platforms->push_back(QQ) ;
// 設置友盟分享面板上顯示的平台
shareButton->setPlatforms(platforms);
// 設置文本分享內容
shareButton->setShareContent("umeng social Cocos2d-x sdk.") ;
// 設置要分享的圖片, 圖片支持本地圖片和url圖片, 但是url圖片必須以http://或者https://開頭
shareButton->setShareImage("/sdcard/header.jpeg") ;
// 設置按鈕的位置
shareButton->setPosition(ccp(150, 180));
// 然後開發者需要將該按鈕添加到游戲場景中
CCMenu* pMenu = CCMenu::create(shareButton, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);
// ********************** 設置平台信息 ***************************
// CCUMSocialSDK *sdk = shareButton->getSocialSDK();
// sdk->setQQAppIdAndAppKey("設置QQ的app id", "appkey");
// sdk->setWeiXinAppId("設置微信和朋友圈的app id");
// sdk->setYiXinAppKey("設置易信和易信朋友圈的app id");
// sdk->setLaiwangAppInfo("設置來往和來往動態的app id",
// "設置來往和來往動態的app key", "我的應用名");
// sdk->setFacebookAppId("你的facebook appid");
// 設置用戶點擊一條圖文分享時用戶跳轉到的目標頁面, 一般為app主頁或者下載頁面
// sdk->setTargetUrl(" ");
// 打開或者關閉log
// sdk->setLogEnable(true) ;
// ********************** END ***************************
集成到這一步就完成了,如果沒有異常,應該會出現下面的界面,這說明你已經成功實現了集成工作。
⑸ 我為什麼應該選擇 quick-cocos2d-x
最近有不少開發者都向我提出了一個問題:我為什麼應該選擇 quick-cocos2d-x?
這個問題在我看來,實際上包含幾重意思:
1. 為什麼會出現 quick 這個項目?
2. quick 和 cocos2d-x 到底有多大的區別?
3. 選擇 quick 還是 cocos2d-x?
4. 選擇 quick 的風險有多大?
5. quick 未來的路線圖是什麼?
----
1. 為什麼會出現 quick 這個項目?
關於這個問題,我在 cn quick-x com 上有一個詳細的說明,簡單概括那就是:開發商需要一個更完善的 cocos2d-x + Lua 的解決方案。
2. quick 和 cocos2d-x 到底有多大的區別?
區別分為幾個層面:
2.1. 底層 C++ 代碼:quick 是建立在 cocos2d-x 基礎上的開源項目,對 cocos2d-x 的功能幾乎沒有做裁剪(除了用一些更好的 Lua 擴展組件代替 cocos2d-x 內置的),主要修改都是新增功能。cocos2d-x 的 C++/Lua 項目拿到 quick 里是完全可以跑的。
2.2. 擴展的功能:針對開發商的實際需求,quick 里提供了加密解密、網路請求、IAP、第三方 SDK 集成、物理引擎封裝等一系列擴展。這些擴展都是獨立的代碼,並不侵入 cocos2d-x 的底層代碼。
2.3. 對 cocos2d-x 的改進:主要包括 Lua 支持的改善,以及觸摸事件機制的改進。前者是為了游戲運行更穩定,後者則簡化了 UI 的開發。
2.4. 一個 Lua 框架:quick 包含的 Lua 框架,絕大部分功能都可以直接跑在 cocos2d-x 上(實際上有開發商這樣做)。這個框架的價值在於將 C++ 風格的 API 轉為了 Lua 風格,讓開發者可以用更精簡的代碼實現更多的功能。並且框架定義的規范、介面,讓開發者可以創建更容易維護的程序代碼。
所以 quick 和 cocos2d-x 就像美女穿衣服和不穿衣服的區別。
3. 選擇 quick 還是 cocos2d-x?
如果你認為 Lua 是更靠譜的選擇,那麼請使用 quick。
4. 選擇 quick 的風險有多大?
我能想到的有幾點:
4.1. quick 的作者發瘋了,對 cocos2d-x 亂改一氣,造成了 quick 和 cocos2d-x 的兼容性被破壞。我不敢保證不會有這一天,但是我時刻警醒自己抵制住這種誘惑。大家需要的是一個可靠的產品,而不是一個按照個人意願隨心所欲改變的玩具。
4.2. 主要維護者跑路了,不維護 quick 了。我想出現這種情況,要麼是轉發過了 500,要麼是 cocos2d-x 這個體系已經玩不轉了。
4.3. quick 不再跟隨 cocos2d-x 升級。這個請放心,當 cocos2d-x 3.x 成熟的時候,quick 會第一時間發布匹配的版本。追求新技術,是有節操程序員的基本素質。
5. quick 未來的路線圖是什麼?
quick 的架構會繼續保持:cocos2d-x 最小修改 + 擴展 + Lua 框架 的形式。這樣對 cocos2d-x 的修改最小化。同時,我們會努力將 quick 中對 cocos2d-x 的改進推送到 cocos2d-x 官方倉庫。希望有朝一日能夠實現官方版 cocos2d-x + quick 擴展 的架構。
而具體到功能上,quick 在 2013 年將實現下列目標:
5.1. 一個功能全面的 UI 庫:亮點是自動布局管理和可擴展的 UI 控制項。因為整個體系都是 Lua 實現,所以可以充分利用動態語言的優勢。
5.3. 一個 MVC 庫:包含基本功能的 MVC 架構,提供清晰的 API 和代碼組織結構,並且可以很容易的擴展。
5.4. 全面的網路解決方案:非同步 HTTP、HTTP 隊列、Socket 介面和 WebSocket 介面。
5.5. 在線更新:在線更新游戲的腳本和資源,繞開蛋疼的 App Store 審核。
5.6. 第三方 SDK 介面標准化:目前已經支持 App Store IAP, Umeng, Flurry, 91, DianJin, Domob, YouMi 等 SDK 的介面。而今年我們將把這些 SDK 的介面標准化,實現類似 cocos2d-x plugin-x 的架構。但因為是動態語言,所以在靈活性上會有顯著優勢。同時我們也會陸續添加其他 SDK 的介面。
5.7. 專職團隊:隨著使用者的增加,我們也會嘗試提供一些商業服務,這樣 quick 將會擁有一個專職團隊。未來的發展更快更好。
未來,quick 將按照平均每月一個版本的速度發布。而即將到來的國慶版,將實現 UI 庫的基本架構和布局管理,以及在線更新功能。
⑹ cocos2dx-lua 能不能用AMF3來加密lua源文件
你用的是cocos2dx 3.2版本嗎?如果是的話,加密就會比較簡單了。
官方文檔詳見:http://cocos2d-x.org/wiki/Cocos_luacompile
.lua文件編譯為.luac文件[.lua to .luac]
在項目文件目錄下嘗試
cocos luacompile -h查看幫助信息
cocos luacompile -s ./projects/MyLuaGame/src -d ./projects/MyLuaGame/src -e -k MyLuaKey -b MyLuaSign
./projects/MyLuaGame/src--》lua源文件目錄
./projects/MyLuaGame/src--》生成luac存放目錄
關於MyLuaKey及MyLuaSign的設置,見AppDelegate.cpp
stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA"));
修改對應的key及sign即可。
⑺ 如何對cocos2d-x游戲源文件加密
本教程將會教大家如何使用Cocos2d-x來做一個基於tile地圖的游戲,當然還有Tiled地圖編輯器。(我們小時候玩的小霸王小學機裡面的游戲,大部分都是基於tile地圖的游戲,如坦克大戰、冒險島、吞食天地等)我們將會創建一個忍者在沙漠中找西瓜吃的小游戲。
在第一部分教程中,我將教大家如何使用Tile來創建地圖,怎樣把地圖加到游戲中,怎麼讓地圖跟隨玩家滾動,以及怎樣使用對象層。
在第二部分教程中,我將介紹如何在地圖中創建可碰撞的區域,如何使用tile屬性,如何製作可拾取的物體和動態修改地圖,還有確保忍者不要吃撐了!
如果你還沒有準備好的話,你可能需要先從《如何用Cocos2d-x3.0製作一款簡單的游戲》系列教程開始學起,因為我們這個教程使用了大量的基本概念,而這些概念都可以從上面的教程中獲取。
好了,讓我們玩一玩tile地圖吧!
創建工程骨架
讓我們首先創建整個工程的骨架,這樣可以確保今後我們需要的文件都包含進來了,並且能夠跑起來。
首先工程命名為TileGame。
接下來,下載游戲資源文件。這個資源文件包里包含了以下內容:
玩家sprite。這個圖片和《如何用Cocos2d-x3.0製作一款簡單的游戲》差不多。
我使用cxfr這個工具製作的一些音效。
我使用GarageBand製作的一些背景音樂。(查看這篇博文獲得更多的信息)
我們將會使用的tile集合--它實際上會和tile地圖編輯器一塊兒使用,但是,我想把它放在這里,餘下的事情會變得更容易。
一些額外的「特殊」的tile,我將會在後面加以說明。
一旦你獲得了這些資源,解壓並把它拖到你的工程的「Resources」分組下面。(編者的話:上面的音頻資源都被編者轉成了mp3格式)
如果一切順利,所有的文件應該都在你的工程里了。是時候製作我們的地圖了!
使用Tile來製作地圖
Cocos2d-x支持使用Tile地圖編輯器創建的TMX格式的地圖。(建議大家在安裝的時候選擇英文,本教程的Tile採用英文的)
下載完之後,直接雙擊運行。點擊File\New,然後會出現以下對話框:
在 orientation部分,你可以選擇Orthogonal。Layer format我們也選默認的 Base64(zlib compressed)。
接下來,設置地圖的大小。記住,這個大小是以tile為單位的,而不是以像素為單位。我們將創建一個盡量小的地圖,因此選擇50*50。
最後,你指定每個tile的寬度和高度。你這里選擇的寬度和高度要根據你的實際的tile圖片的尺寸來做。這個教程使用的樣例tile的尺寸是32*32,所以在上面的選項中選擇32*32.
接下來,我們把製作地圖所需要的tile集合導入進來。點擊菜單欄上面的「map」菜單,「NewTileset...」,然後會出現下面的窗口:
為了獲得圖片,點擊「Browse...」按鈕,然後定位到工程的的Resources文件夾,選擇 tmw_desert_spacing.png文件(我們剛才解壓進去的),然後加到工程中去。它會基於文件名自動填充名稱。然後把新圖快 名稱命名為「tmw_desert_spacing.png」.同時,設置下面的Tile spacing和Margin都為1。
你可以保留寬度和高度為32*32,因為tile的實際大小也是這么多。至於margin和spacing,我還沒找到任何好的文檔解釋如何設置這兩個值,下面是我的個人看法:
Margin就是當前的tile計算自身的像素的時候,它需要減去多少個像素(寬度和高度都包含在內)。(類比word、css的margin)
Spacing 就是相鄰兩個tile之間的間隔(同時考慮寬度和高度)(類比word、css的spacing)
如果你看看 tmw_desert_spacing.png,你將會看見每一個tile都有一個像素的空白邊界圍繞著,這意味著我們需要把margin和spacing設置為1。
一旦你選擇ok,你將會看到Tilesets窗口中顯示了一些tiles。現在,你可以製作地圖了!在Tilesets小窗口,選擇一個tile,然後再在地圖上的任意位置單擊,你就會看到你選中的tile出現在點中的地方了。
因此,繼續製作地圖吧---充分發揮你的聰明才智!確保增加至少一對建築物在地圖上,因為後面我們需要一些東西來做碰撞。
記住一些方便的快捷方式:
你可以在Tileset拾取器中拖出一個方框,一次選取多個tile。
你可以使用工具欄上的「Bucket Fill Tools」
⑻ Android APP加密方法都有哪些
安卓APP加密的方法主要分成三類:源碼加密、數據安全和應用保護,而每一類又分成好幾個小項。
源碼加密包括:Dex文件保護、防二次打包、so文件保護、資源文件保護。以Dex文件保護為例,Dex文件保護又包括:高級混淆、DEX文件加殼、DEX文件加花、動態類載入、內存防mp。
高級混淆:代碼混淆,可以降低代碼可讀性、縮小包大小。
DEX文件加殼:相當於把源碼打包至其他文件夾下,逆向工具對加密後的dex文件解析,只能看到殼文件,可以防止解包後看到真正的源碼。愛加密利用挖空技術實現函數級加密,安全強度高,啟動效率快。
dex加花:由於大部分逆向工具都是線性讀取位元組碼並解析,當遇到無效位元組碼時就會引起反編譯工具位元組碼解析失敗。愛加密插入無效位元組碼到dex文件之中,同時保證該位元組碼永遠不會被執行,否則程序運行也會崩潰。這樣,就能起到反編譯的作用了。
dex動態類載入:愛加密加固後的dex文件源碼可以動態分離,在運行時,將源碼分段載入到內存當中。
內存防mp:程序運行時會釋放代碼,內存防mp可以防止程序運行時被劫持。
應用安全包括:log日誌輸入屏蔽、應用清場。清場技術依賴於雲端黑名單、白名單DB,應用每次啟動後便自動進行本地的黑名單、白名單DB數據更新,若檢測到有異常情況,則可對用戶進行提示。
數據安全包括:頁面防劫持、本地數據保護、截屏保護、內存數據防查詢、協議加密、虛擬鍵盤。
⑼ cocos2d-x-3.3rc0 lua 怎麼編譯成apk
仍然使用上次生成的test工程,我是放在bin目錄下的。
在bin目錄下創建文件test.bat文件,內容如下:
[cpp] view plain
@echo off
set DIR=%~dp0
%DIR%win32\php.exe %DIR%\lib\compile_scripts.php -zip -x main test/scripts/ test/res/test
說下complie_scripts.php的用法:
[cpp] view plain
usage: compile_scripts [options] dirname output_filename
options:
-zip package to zip
-suffix package file extension name
-p prefix package name
-x exclude packages, eg: -x framework.server, framework.tests
-q quiet
examples:
* packageing scripts/*.lua to res/game.zip
compile_scripts -zip scripts/ res/game
注意:需要將quick-cocos2d-x\bin\win32目錄加入到系統PATH環境變數,另外過程中可能會提示缺少msvcr110.dll文件,自己解決一下就可以了。
運行test.bat後就會在test/res目錄加生成test.zip文件。
要調用裡面的腳本需要在mail.lua文件中CCLuaLoadChunksFromZip("res/framework_precompiled.zip")語句下添加一句代碼:
CCLuaLoadChunksFromZip("res/test.zip")
刪除掉原來的腳本,注意要保留main.lua,測試一下,證明程序可以運行。
這樣腳本就不需要加密解密了。
⑽ 手機游戲用Cocos2d游戲引擎的開發代碼如何保障不會被逆向破解
目前針對Cocos2d游戲引擎的開發代碼防逆向主要是通過隱藏lua腳本文件,根據愛加密介紹,通過隱藏lua腳本文件,可以保護代碼不被黑客給逆向,從而保護游戲邏輯的安全性。希望可以採納,謝謝!