这(zhè)是(shì)Ubuntu(Linux)反编译apk(apktool)下(xià)载(zǎi),前者(zhě)是将(jiāng)apk中(zhōng)的classes.dex转(zhuǎn)化成Jar文件,而JD-GUI是(shì)一个反编译工(gōng)具,可(kě)以直接查看(kàn)Jar包的源代码。
Ubuntu(Linux)反编译apk(apktool)在开(kāi)发学习(xí)的过程中,反编译成熟的apk能(néng)从中(zhōng)学到不少东西,在ubuntu反编译apk。获取相应的配置文件和资(zī)源文件 已经java源代码文件,从中可(kě)以(yǐ)吸取有用的设计。 反编译apk 主(zhǔ)要有三个(gè)工具 apktool :反(fǎn)编译获(huò)取xml文件 资源文件 dex2jar :把dex文件转换成(chéng)jar文件(jiàn) jd-gui : 把.class.jar文件转(zhuǎn)化为java文(wén)件
•Download Linux wrapper script (Right click, Save Link As apktool)
•Download apktool-2 (find newest here)
•Make sure you have the 32bit libraries (ia32-libs) downloaded and installed by your linux package manager, if you are on a 64bit unix system.
•(This helps provide support for the 32bit native binary aapt, which is required by apktool)
•Rename downloaded jar to apktool.jar
•Move both files (apktool.jar & apktool) to /usr/local/bin (root needed)
•Make sure both files are executable (chmod +x)
1 . 把(bǎ)apk拷(kǎo)到apktool根(gēn)目录下,执(zhí)行:./apktool d xxx.apk,会生成xxx目(mù)录,里面有res目录(各种资源文件(jiàn)),smali目录(类似src目录,里(lǐ)面文件的语法不(bú)一样)及androidsManifest.xml。
[*.apk->*.jar: sh ./dex2jar/dex2jar.sh xxx.apk,生成xxx_dex2jar.jar通过(guò)jd-linux看源
码]
2 . 什(shí)么apk汉化(huà)啊,就(jiù)到res/values里(lǐ)string.xml里修改字符串,或(huò)者拷贝一份values目录改为(wéi)values-zh-rCN,再去(qù)里(lǐ)面修改string.xml里英文字符(fú)串改为中文(wén),所谓的汉化就是这么简单。另外,有(yǒu)些图片里不是中文的得去改(gǎi)图片,那(nà)得用Photoshop了,图片也不能乱改(gǎi),格式,图片大小(尺寸)得原来的。
3 . 修改(gǎi)smali文件,这个有些难度。比如有些(xiē)apk安装(zhuāng)了后要积分什么的,比如大于100才可以(yǐ)用的,其实这个值是用SharedPreference存放的,也就是存(cún)在xml里,,位置:/data/data/[包名]/shared_prefs的(de)某个xml里,文件不多肯定是可以找(zhǎo)到的。另外一种方法就是修改.smali文件也可(kě)以达到这目的,软件(jiàn)实现肯定是读(dú)取(qǔ)积分那个值给它修改一(yī)下就可以(yǐ)了(le),例如 const/16 v0 100 (其实就是 v0 = 100)这个语法有点像汇编,觉得还是比汇编(biān)简单,v0 v1 ...是寄存器,之前会跟变(biàn)量关联的。具体的还是自(zì)己看看smali语法(fǎ)。
4 . 打包生成apk,执行:./apktool b xxx,会在xxx里面生成,一个dist目录(lù),里(lǐ)面就是xxx.apk,但不能安装(zhuāng)滴,提示(Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]),没有(yǒu)给这个apk签名,
5 . 签名,执行:sh ./dex2jar/d2j-apk-sign.sh ./xxx/dist/xxx.apk 就是给刚(gāng)才那(nà)个apk签名(míng),生成的文件还是xxx.apk在apktool根目(mù)录下。这样就大(dà)功告成啦。
