​[AndroidAPP]APK反编译与重新打包

2017年12月02日 Android 7条评论 阅读4949次
[AndroidAPP]APK反编译与重新打包的那些事


一、工具 & 环境 准备

工于利其事,必先利其器。先上工具:

1、apktool

1、apktool

 作用:
 将apk文件解压,得到资源文件(AndroidManifest.xml清单文件、layout布局、string等xml资源文件)
 这个工具的解压,和一般电脑上的解压工具不一样,解压工具出来的APK得到的资源文件是二进制文件,我们是无法读懂的。
 
 下载地址:
 https://bitbucket.org/iBotPeaches/apktool/downloads/</span><br />   下载后得到apktool_2.3.0.jar文件(目前最新版本是2017年9月21日发布的2.3.0),并命名为apktool.jar(配合下面脚本使用)。另外还需要一个脚本执行文件
  https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/osx/apktool</span><br />   保存到文件apktool,并sudo chmod +x apktool 即可
  确保apktool文件和上面下载重命名为apktool.jar放到同一个目录下。
  apktool是否要放到环境变量这个就看个人需要了,再次不再敖述。

2、dex2jar
 作用:
 将apk中的classes.dex文件转换成jar文件。
 
 下载地址:
 https://sourceforge.net/projects/dex2jar/</span><br />
 下载后要对dex2jar.sh增加可执行权限。
 chmod +x dex2jar.sh

3、jd-gui
 作用:
 将jar包还原为java文件。
 说明下,非Android专用,只要是jar包,一般用这个均可以还原为java文件

 下载地址:
 http://jd.benow.ca</span><br />

二、Android 对APK进行反编译

工具准备好之后,接下来就是反编译的过程了。

0、原始APK文件:/Users/jileniao/Documents/decompile-apk/TestDemoDecompile.apk

1、使用apktool工具

cd /Users/jileniao/Documents/decompile-apk/
apktool d TestDemoDecompile.apk



更多使用方法,可以随时apktool -help查阅。

执行后,会在decompile-apk目录下,生成apk同名的文件夹TestDemoDecompile。

进入TestDemoDecompile文件夹:


decompile-apk-apktool b.png


这就是我们熟悉的Android源码工程目录结构了。
打开AndroidManifest.xml看看吧,已经不是二进制代码了,其他布局文件资源文件也是同样。

其中注意smali文件夹,里面目录和src文件夹下java源码目录相同,里面都是以.smali结尾的文件。
smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。

2、针对上面的smali文件,虽然有固定的语法格式,但读起来还是比较困难的,我们还是希望能直接读的java代码。
  
  使用dex2jar工具。执行下面命令

  cd /Users/jileniao/Documents/decompile-apk/
  d2j-dex2jar.sh TestDemoDecompile.apk



  执行后,会在d2j-dex2jar.sh目录下,生成apk同名+-dex2jar的jar文件。TestDemoDecompile-dex2jar.jar

  另外,属于步骤1的另外一种情况,有些apktool版本反编译出来的某个版本的apk文件含有的classes.dex的,或直接用解压工具解压apk也会得到classes.dex。
  这个classes.dex是Java代码编译得到的Dalvik VM能直接执行的文件。
  此时,针对classes.dex文件,也要执行dex2jar命令得到jar文件了

3、使用jd-gui还原java源码

有了jar文件,就是使用jd-gui了,如其名,这是个窗口工具,通过file open...便可以直接打包上面步骤2中生成的jar文件了。

  此时,终于有了守得云开见月明的感觉。完完整整清清楚楚的java文件已经呈现在眼前了。


三、Android 对APK进行反编译文件进行某些修改后,重新打包回APK,或叫二次打包

1、二次打包,还是使用apktool工具

 继续沿用上面步骤中的路径,我反编译后的目录是/Users/jileniao/Documents/decompile-apk/,一些修改也要在这里进行的。

 apktool b /Users/jileniao/Documents/decompile-apk



 命令执行结果,会在decompile-apk目录下生成dist和build文件夹
 其中build文件夹是编译过程中临时文件,dist中的apk就是本次打包后的apk了。

2、是不是迫不及待地想要安装apk试试了,此时直接安装apk后会有下面的错误。

 Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

见文知意,原来是没有经过签名的apk,此时就要对apk进行签名了。

签名,就要有签名文件,可以使用keystore命令生成一个签名文件

keytool -genkey -v -keystore decompile-apk -alias decompile-apk -keyalg RSA -validity 20000 -keystore ./decompile-apk.keystore 



该命令执行后,会有一系列诸如用户名、组织名、市、省、国家、密码等问题,按照提示回答后确认即可。

该命令将在当前文件夹下生成名为decompile-apk.keystore、别名decompile-apk、签名算法为RSA、有效期20000天的签名文件。


3、有了上一步的签名证书,可以给apk签名了。

jarsigner -verbose -keystore /Users/jileniao/Documents/decompile-apk/decompile-apk.keystore -signedjar /Users/jileniao/Documents/decompile-apk/TestDemoDecompile_signed.apk /Users/jileniao/Documents/decompile-apk/dist/TestDemoDecompile.apk decompile-apk




4、安装到手机确认

卸载之前的apk,重新安装二次打包后的apk,打开apk。命令如下:

adb uninstall net.jileniao.decompileapk
adb install /Users/jileniao/Documents/decompile-apk/decompile-apk.keystore -signedjar /Users/jileniao/Documents/decompile-apk/TestDemoDecompile_signed.apk
adb shell am start -n net.jileniao.decompileapk/net.jileniao.decompileapk.MainActivity





至此,已经完成了对APK从反编译,到重新打包回APK并签名,安装到手机的全过程。

反编译(逆向工程)仅限用于技术交流,禁止用户商业盈利目的。

分享本文至:

WRITTEN BY

avatar
本文标签:apk反编译
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

7 条评论

  1. avatar icallvoters

    <a href="http://www.ankaraoyunevi.com/nike-roshe-femmes-light-bleu-violet-chaussuresl">nike roshe femmes light bleu violet</a> <a href="http://www.iotlsebring.com/nike-kaishi-ns-3m-black-white-shoesj">nike kaishi ns 3m black white</a> <a href="http://www.joshsingleton.com/north-carolina-beanie-hat-hatk">north carolina beanie hat</a> <a href="http://www.amesecolombia.com/nike-foamposite-alle-r%C3%B8d-skoj">nike foamposite alle r酶d</a> <a href="http://www.flatshotgame.com/plain-black-polo-shirt-mens-poloh">plain black polo shirt mens</a> <a href="http://www.myrumpun.com/adidas-forum-mid-womens-green-shoesi">adidas forum mid womens green</a>
    icallvoters http://www.icallvoters.com/

  2. avatar isampled

    <a href="http://www.sousoushop.com/nike-air-max-95-bleu-noir-chaussuresh">nike air max 95 bleu noir</a> <a href="http://www.rcfitcamp.com/nike-foamposite-cielo-azul-amarillo-zapatosp">nike foamposite cielo azul amarillo</a> <a href="http://www.milajerdchat.com/mens-asics-asics-gel-kayano-17-blue-grey-shoesi">mens asics asics gel kayano 17 blue grey</a> <a href="http://www.girisweb.com/nike-kobe-9-mid-orangen-wei%C3%9F-schuhei">nike kobe 9 mid orangen wei脽</a> <a href="http://www.abcmovieplot.com/nike-kobe-11-flyknit-rojo-blanco-zapatosk">nike kobe 11 flyknit rojo blanco</a> <a href="http://www.oldhalliwell.com/adidas-neo-l%C3%A6der-gr%C3%A5-hvid-skoi">adidas neo l忙der gr氓 hvid</a>
    isampled http://www.isampled.com/

  3. avatar free run 2 schwarz

    <a href="http://www.truthtapes.com/nike-lebron-12-low-himmelen-bl%C3%A5-hvit-obuvk">nike lebron 12 low himmelen bl氓 hvit</a> <a href="http://www.veskopetrov.com/mens-jordan-melo-m10-purple-shoesi">mens jordan melo m10 purple</a> <a href="http://www.kaosmotogp.com/kvinders-air-jordan-retro-8-lilla-bl%C3%A5-skoj">kvinders air jordan retro 8 lilla bl氓</a> <a href="http://www.doularhythms.com/nike-lunarglide-8-s%C3%B8lv-svart-obuvi">nike lunarglide 8 s酶lv svart</a> <a href="http://www.animalpainvet.com/kvinners-nike-huarache-ultra-hvit-r%C3%B8d-obuvk">kvinners nike huarache ultra hvit r酶d</a> <a href="http://www.texarillo.com/nike-lunarglide-7-kvinners-r%C3%B8d-bl%C3%A5-obuvi">nike lunarglide 7 kvinners r酶d bl氓</a>
    free run 2 schwarz http://www.atrapaniapp.com/free-run-2-schwarz-schuhel

  4. avatar startagencia

    <a href="http://www.wuxiangtaichi.com/mens-nike-air-max-1-gold-green-shoesj">mens nike air max 1 gold green</a> <a href="http://www.culdesacmag.com/air-jordan-future-gr%C3%A5-lyser%C3%B8d-skoq">air jordan future gr氓 lyser酶d</a> <a href="http://www.livinggreedy.com/hommes-asics-gel-lyte-5-noir-argent-chaussuresl">hommes asics gel lyte 5 noir argent</a> <a href="http://www.clickstroy.com/air-jordan-future-hommesthe-verte-jaune-chaussuresq">air jordan future hommesthe verte jaune</a> <a href="http://www.zotorrent.com/herren-asics-gel-noosa-tri-10-gr%C3%BCn-schuhei">herren asics gel noosa tri 10 gr眉n</a> <a href="http://www.viptarimas.com/air-jordan-11-varsity-rot-low-schuheh">air jordan 11 varsity rot low</a>
    startagencia http://www.startagencia.com/

  5. avatar mysonno

    <a href="http://www.opelbeyinleri.com/nfl-chad-henne-mens-limited-red-jersey-4-kansas-city-chiefs-nike-home-vapor-untouchable-nfls">nfl chad henne mens limited red jersey 4 kansas city chiefs nike home vapor untouchable</a> <a href="http://www.pazoga.com/air-max-90-rouge-velvet-uk-scarpeg">air max 90 rouge velvet uk</a> <a href="http://www.rahwindsor.com/lebron-12-low-bl%C3%A5-and-gull-value-obuvc">lebron 12 low bl氓 and gull value</a> <a href="http://www.salessteelbar.com/nike-city-sandal-iii-kinder-blau-wei%C3%9F-scarpea">nike city sandal iii kinder blau wei脽</a> <a href="http://www.harpiabd.com/nike-flyknit-lunar-2-orange-bl%C3%A5-door-schuheb">nike flyknit lunar 2 orange bl氓 door</a> <a href="http://www.katiagrinkov.com/nike-limited-ethan-pocic-jersey-77-nfl-seattle-seahawks-therma-long-sleeve-mens-navy-blue-nflr">nike limited ethan pocic jersey 77 nfl seattle seahawks therma long sleeve mens navy blue</a>
    mysonno http://www.mysonno.com/

  6. avatar lapaktoko

    <a href="http://www.laketreepress.com/lebron-zoom-soldier-9-bianca-scarpek">lebron zoom soldier 9 bianca</a> <a href="http://www.prohaarklinik.com/nike-air-force-1-independence-day-rouge-chaussuresh">nike air force 1 independence day rouge</a> <a href="http://www.bonfanticare.com/prada-2ard64-wallets-in-deep-blue-pradah">prada 2ard64 wallets in deep blue</a> <a href="http://www.antoniopagni.com/miami-heat-jersey-numbers-nfli">miami heat jersey numbers</a> <a href="http://www.wcshosting.com/jordan-gamma-bl%C3%A5-3-skol">jordan gamma bl氓 3</a> <a href="http://www.biddingstream.com/merino-polo-shirt-long-sleeve-poloh">merino polo shirt long sleeve</a>
    [url=http://www.lapaktoko.com/]lapaktoko[/url]

  7. avatar konyakbs

    <a href="http://www.kokogroep.com/jordan-retro-12-grau-and-orange-kurpese">jordan retro 12 grau and orange</a> <a href="http://www.duboismantels.com/kvinders-nike-air-max-87-sb-hvid-orange-obuva">kvinders nike air max 87 sb hvid orange</a> <a href="http://www.ncwhomesearch.com/air-jordan-14-retro-sort-university-bl%C3%A5-shield-obuvf">air jordan 14 retro sort university bl氓 shield</a> <a href="http://www.westmiedtech.com/adidas-casual-scarpe-verde-oro-obuvf">adidas casual scarpe verde oro</a> <a href="http://www.vistagoldcorp.com/nike-air-force-one-mid-lunar-herren-schuhef">nike air force one mid lunar herren</a> <a href="http://www.maviracharter.com/adidas-zx-700-verde-gituttio-lights-kurpesd">adidas zx 700 verde gituttio lights</a>
    konyakbs http://www.konyakbs.com/

欢迎留言




用户登录

sitemap