亚洲乱码一卡二卡四卡乱码新区_亚洲乱码中文字幕小综合_亚洲人成电影在线播放_亚洲性色AV一区二区三区_亚洲一区二区三区影院_亚洲中文字幕久久精品无码A_亚洲中文字幕无码专区_伊人热热久久原色播放WWW_在线观看AV永久免费_最新欧洲大片免费在线,欧美日韩成人三级免费看,久久黄色网址,欧美激情内射喷水高潮

0x7.so文件匯編修改

0x7.so文件匯編修改


本文通過cocos2d游戲的修改來介紹so文件的匯編修改,,提綱如下:



本文使用的樣本是cocos2d手游貪婪洞窟,,可自行下載,也可以使用鏈接下載 https://pan.baidu.com/s/1d6BVzS  密碼: 8nyk
開始破解之前,,照舊安裝和確認(rèn)破解項(xiàng),,發(fā)現(xiàn)初始金幣為100,,我們姑且定為破解金幣數(shù)量。



對于cocos2d手游,,可修改的函數(shù)主要位于libcocos2dcpp.so中,。



接下來我們開始進(jìn)行so文件的分析:反編譯、確認(rèn)關(guān)鍵函數(shù)及邏輯,、十六進(jìn)制修改,。

0x1. so文件反編譯
反編譯工具為我們熟知的IDA,將so文件拖拽進(jìn)IDA窗口,,反編譯后可以得到匯編代碼,。



0x2.確認(rèn)關(guān)鍵函數(shù)及邏輯
既然是修改金幣,那我們在IDA的Exports一欄按Ctrl+F搜索gold,,結(jié)果如下:



看到結(jié)果后,,很顯然我們需要的是getgold,排除掉兩個(gè)bool型(布爾型,,只有0和1)的getgold,,只剩下GameController::getGold(CAVE_MODE),雙擊進(jìn)入查看:



那么我們要做的就是,給R0一個(gè)更大的值,,比如一個(gè)固定的比較大的數(shù),。在修改之前我們先熟悉一下ARM匯編中的MOV指令:



如果我們需要將1024000賦值給R0,則可以寫為 MOV R0,,,#1024000

0x3.so文件十六進(jìn)制修改
這個(gè)賦值指令如何修改呢,? 這里我們需要借助ARM匯編轉(zhuǎn)換器,將該指令轉(zhuǎn)換為十六進(jìn)制,,然后在so文件中修改十六進(jìn)制數(shù)據(jù)達(dá)到修改指令的目的,。



經(jīng)轉(zhuǎn)換我們得到 MOV R0,,#1024000的十六進(jìn)制為 FA 0A A0 E3
IDA中,,我們定位到該語句偏移地址,,切換到十六進(jìn)制查看:



我們現(xiàn)在要做的就是,地址為8552B0的十六進(jìn)制 03 00 A0 E1 修改為 FA 0A A0 E3,,此步驟我們使用010Editor來完成,。



上圖為我們修改后的值,將修改后的so文件放回lib目錄下,,打包運(yùn)行即可,,請大家自己嘗試;可舉一反三嘗試修改鉆石數(shù)量,。

?