android捕鱼达人修改方法(反编译、修改、打包)
- 格式:pdf
- 大小:497.31 KB
- 文档页数:4
【转】⼀步⼀步带你反编译apk,并教你修改smali和重新打包⼀、⼯具介绍:1.apktool:aapt.exe,apktool.bat,apktool.jar;三个在同⼀⽬录结合使⽤,⽤来反编译apk,apk重新打包;2.dex2jar:该⼯具作⽤是将classes.dex⽂件,反编译出源码(如果apk未加固),反编译出⽂件,使⽤jd-gui⼯具进⾏查看;3.Auto-Sign:⾃动签名⼯具,将重新打包的apk进⾏签名,如果不签名,⽆法安装使⽤。
⼯具下载地址:(需要3CSDN积分,原本我设置3积分的,不知道为什么涨到16积分了......)使⽤场景:项⽬源码丢失,只有线上apk,并且没有加固,要求修改apk接⼝地址,并且重新打包,再发布。
⼆、⼯具使⽤:解压后⼯具包如图:1.思路:使⽤⼯具dex2jar反编译,并⽤jd-gui⼯具进⾏查看项⽬结构,查看源码,并且找到接⼝地址类,修改接⼝地址;步骤⼀:下载好⼯具,将需要反编译的APK后缀名改为.rar或则 .zip,并解压,如图:得到其中的classes.dex⽂件(它就是java⽂件编译再通过dx⼯具打包⽽成的),将获取到的classes.dex复制到解压出来的⼯具dex2jar-0.0.9.15 ⽂件夹内,在命令⾏下,进⼊到dex2jar.bat所在⽬录,输⼊命令:dex2jar.bat classes.dex效果如下:步骤⼆:运⾏结束后,在该⽬录下会⽣成⼀个classes_dex2jar.jar的⽂件,如图:然后打开⼯具jd-gui⽂件夹⾥的jd-gui.exe,⽤该⼯具打开⽣成的classes_dex2jar.jar⽂件,便可以看到源码了,效果如下:2.思路:apktool,反编译修改smali⽂件,进⾏重新打包,通过⽤jd-gui⼯具找到接⼝地址类后,与相应的smali⽂件进⾏对⽐,修改接⼝地址;下载上述⼯具中的apktool,解压得到3个⽂件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK⽂件放到该⽬录下,如图:打开命令⾏界⾯(运⾏-CMD),定位到apktool⽂件夹,输⼊以下命令:apktool.bat d -f test.apk -o testapktool -f [待反编译的apk] -o [反编译之后存放⽂件夹]如图:反编译之后会得到test ⽂件夹,打开test⽂件夹,⾥边就是反编译出来的各种资源⽂件使⽤jd-gui查看源码找到地址类,然后在smali⽂件⾥找到地址的smali⽂件,更改smali⽂件内接⼝地址。
涉及内容apk反编译代码修改打包重启签名需要的工具jdk:必须的baksmali:classes.dex反编译为smali格式(文本文件,可修改)smali:smali格式编译打包为classes.dex但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助dex2jar:classes.dex转为jar包jdgui:jar反编译并阅读以上工具可以在 / 下载好了,顺序就是把apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。
注意安装时要先删除原来手机里的版本,因为签名不同了,我第一次再这里卡了好久。
以“捕鱼达人海底捞”为例下载这个游戏的apk,fishing_joy_1.apk,和工具放在一起用zip解开fishing_joy_1.apkcopy classes.dex到baksmali的同一目录用baksmali处理为smalijava -jar baksmali-1.2.6.jar -x classes.dex得到out目录,里面是smali文件用dex2jar处理classes.dex为jar包dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex 得到classes.dex.dex2jar.jar这时我们的工作目录下面是这样用jdgui打开classes.dex.dex2jar.jar好了,可以看代码,但还不能直接修改,需要对比着来修改smali文件比如我们通过对比找到控制鱼被打到几率的代码在FishLayer.smaliJava代码1.invoke-static {v4, v5}, Lcom/sg/android/fish/fish/FishFactory;->getProb(II)D2.3.move-result-wide v44.5.invoke-static {}, Ljava/lang/Math;->random()D6.7.move-result-wide v68.9.const-wide/high16 v8, 0x4059最后的0x4059会与random相乘,如果比getProb方法计算的结果小,判断为鱼可以打下来改为0x0,每条鱼都是必中改好后,用java -jar smali-1.2.6.jar -o classes.dex out得到修改后的classes.dex,用这个文件替换fishing_joy_1.apk中的同名文件但这个apk是不能用的,还没有进行重新签名先用keytool生成keystorekeytool -genkey -keystore mykeystore -alias mykeystore -validity 999 把apk中的META-INF删除,再用jarsigner 签名jarsigner -verbose -keystore mykeystore -signedjar fishing_joy_1_signed.apk fishing_joy_1.apk mykeystore先卸载原来手机中安装的这个游戏,再用fishing_joy_1_signed.apk安装最后工作目录是这个样子。
QUOTE:此方法适用于任何版本包括包括最新的1.6.2,适用于iphone/iPad,适用于越狱/未越狱,总结:万能通用!QUOTE:Fishing Joy(捕鱼达人)是iphone/iPad上一款比较经典的捕鱼游戏,其趣味性和游戏性还是很不错的。
游戏中你需要使用大炮射出渔网来捕鱼。
渔网的等级分为7级,级别越高,打到大鱼的几率也越大。
当然,不同级别的渔网每次射击都要消耗相应数量的金币,比如一级渔网,每次射击消耗一个金币,以此类推,七级渔网每次射击需要消耗7个金币。
游戏中内置IAP,可以花费美刀购买金币。
0.99美刀只能购买200个金币,还是比较贵的。
如果金币没有了,又不想花钱买,那怎么办呢?其实系统每分钟返还5个金币,如果离线,则每小时返还20个金币。
当返还的金币累计到200个时,则不会继续返还。
这样玩的还不过瘾怎么办呢?其实我们可以自己修改金币数量。
需要的工具有:1.ITOOLS (iTools.zip)可以把数据库文件从iphone/iPad中直接拷贝的电脑里,即使iphone/iPad没有越狱也可以!2.SQLite Database Browser (SQLite Database Browser.zip)用于修改数据库文件。
(这两个软件请大家自行下载,各大论坛均有)QUOTE:下面具体讲解如何修改:首先进入游戏,玩一会,然后退出游戏,不要最小化,一定要全退!并用数据线将设备连接到电脑,打开ITOOLS。
点击左侧,你的设备下方的“应用程序”,并在右侧找到“捕鱼达人”这个游戏,点击“文档管理”如下图所示。
双击文件夹并进入Documents子目录,这时候可以看到FlashGame.sqlite这个文件,这就是我们要修改的数据库文件了。
将FlashGame.sqlite这个数据库文件copy到电脑中,注意一定要做一个备份,以防止修改数据库文件失败造成游戏进度丢失。
然后在SQLite Database Browser中打开。
Android APK反编译得到Java源代码和资源文件一、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件工具下载:地址:/p/android-apktool/downloads/list如下图,途中红圈的两个都要下载。
将上面2个文件解压到同一个文件夹下面,将有3个文件被解压出来,如下图所示打开cmd命令行窗口定位到刚才解压的文件夹下,即apktool.bat所在的文件夹,如下图所示1. 将APK反编译将待反编译的apk文件放到c盘根目录下,特别注意,一定要放到根目录下。
输入反编译命令apktool d c:\xxxxx.apk c:\***文件夹命令行解释:apktool d [要反编译的apk文件] [输出文件夹]如:注意:demo文件夹不能是已存在的文件夹,否则会报错2. 将反编译完的文件重新打包成APK很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。
二、反编译apk得到Java源代码工具下载:dex2jar:/p/dex2jar/downloads/listJD-GUI:/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zi p&can=2&q=如下图的两个文件:具体步骤:1. 解压上面两个压缩文件。
2. 从apk文件中解压出classes.dex,将它复制到dex2jar.bat所在的文件夹下3. 命令行下定位到dex2jar.bat所在的目录,然后运行dex2jar.bat classes.dex如图:注:classes.dex不一定要复制到这个文件夹下,在其前面加上路径也是一样的,这里只是为了输命令方便。
如上图所示,看到Done表示成功,将得到下图中红圈内所示的jar文件4. 然后双击jd-gui.exe,打开刚才生成的jar文件,即可看到下图如此,便可看到代码了。
附上上文中所有用到的工具:apk2android.rar在此郑重声明:分享此文,不是为了破解别人的软件,完全是一种学习态度,代码要自己手敲出来才会有感情的。
Android逆向⼯具篇—反编译⼯具的选择与使⽤作者 | 天天记⼩本⼦上的lilac 来源 | CSDN今天给⼤家介绍⼀下Android App 在Java层的逆向⼯具。
逆向⼯具的介绍在过去,当我们想要了解⼀个 app 内部运作细节时,往往先通过 ApkTool 反编译 APK,⽣成 smali 格式的反汇编代码[1],然后⼤佬和⽼⼿直接阅读 smali 代码,适当的进⾏修改、插桩、调试,经过⼀定的经验和猜想,理解程序的运⾏逻辑和加解密细节,⽐如如下的 smali 代码。
smail我们只要先这样,再那样,最后再这样,对对对,就这样,⼀个程序的加密就被破解出来了。
是不是迫不及待想来⼀次App的逆向之旅了?事实上,这种⽅式对⼩⽩实在不友好,有没有更加友好的⽅式呢?当然是有的,如果你百度或者 google 搜索逆向相关的教程和分享,很容易就会发现下⾯这三个⼯具。
在介绍⼯具之前,我们先补充⼀下APK结构的知识,我们以伊对这个社交 Apk 为例。
APK ⽂件其实是⼀种特殊的 zip 格式,我们可以直接⽤ 360 压缩或者别的压缩⼯具打开。
为了满⾜⾃⾝的功能和设计,⼏乎每⼀个都会在基础的⽂件结构上添加不少东西,但有六个部分是不变的,我们罗列和称述⼀下。
⽂件或⽬录作⽤META-INF/描述apk包信息的⽬录,主要存放了签名信息,配置信息,service注册信息res/存放apk资源⽂件的⽬录,⽐如图⽚、图标、字符串、样式、颜⾊assets/同样是存放apk资源⽂件的⽬录,但和res有差异,和我们关系不⼤resources.arsc资源索引,包含不同语⾔环境中res⽬录下所有资源的类型、名称与ID所对应的信息lib/存放so⽂件,越来越多的应⽤由C/C++编写核⼼代码,以SO⽂件的形式供上层JAVA代码调⽤,以保证安全性,这个⽬录是逆向解密关注的重点classes.dex(⼀个或数个)Android程序运⾏在Dalvik虚拟机上,⽽dex就是Dalvik虚拟机的可执⾏⽂件, 相当于Windows平台中的exe⽂件,通过反编译dex,可以获得apk源码(这个说法不很准确,但⽅便理解)AndroidManifest.xml清单⽂件,包含了App⼤量的的配置信息,⽐如包名、应⽤需要拥有的权限(打电话/录⾳/⽹络通信等等)、以及所有的界⾯和程序组件的信息,⽆法解压apk时直接打开,因为清单⽂件在apk打包过程中被编译成了⼆进制格式⽂件接下来我们介绍以下反编译⼯具,看⼀下反编译⼯具的作⽤⼯具作⽤ApkTool解析resources.arsc,AndroidManifest.xml等⽂件,反编译dex⽂件为smali源码Dex2jar将dex⽂件转化为jar⽂件Jd-gui反编译jar,查看java源码⽐如使⽤ Dex2jar+Jd-gui, 最终得到这样的结果。
反编译APK⽂件的三种⽅法(转)因为学习Android编程的需要,有时我们需要对⽹络上发布的应⽤项⽬进⾏学习,可是Android项⽬⼀般是通过APK⽂件进⾏发布的,我们看不到源代码,嘿嘿,办法总会有的,⽽且不⽌⼀个...ps:对于软件开发⼈员来说,保护代码安全也是⽐较重要的因素之⼀,不过⽬前来说Google Android平台选择了Java Dalvik VM的⽅式使其程序很容易破解和被修改,⾸先APK⽂件其实就是⼀个MIME为ZIP的压缩包,我们修改ZIP后缀名⽅式可以看到内部的⽂件结构,类似Sun JavaMe的Jar压缩格式⼀样,不过⽐较去别的是Android上的⼆进制代码被编译成为Dex的字节码,所有的Java⽂件最终会编译进该⽂件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调⽤、涉及到的⽅法都在⾥⾯体现到,⾄于逻辑的执⾏可以通过实时调试的⽅法来查看,当然这需要借助⼀些我们⾃⼰编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private⽂件夹的安全,但是最终我们使⽤修改定值的系统仍然可以获取到需要的⽂件。
⼀、dexdump⽅法dexdump是emulator⾃带提供的查看dex⽂件的⼯具,可使⽤类似这样的命令将dex⽂件dump到txt⽂件中:D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt 得到的⽂件内容,描述了类的信息,但实在是不好读啊~~~~⼆、dex2jar + XJad ⽅法该⽅法是使⽤dex2jar.jar包,将classes.dex⽂件解包成jar,在通过XJad(或者其他class反编译⼯具)进⾏java反编译。
如:1、dex2jar.bat d:\play\classes.dex默认的输出路径同classes.dex,⽣成的⽂件名为classes.dex.dex2jar.jar2、使⽤XJad反编译该jar包之后的使⽤⽅法,⼤家都懂的:)该⽅法的好处在于,通过XJad反编译后,⼤家可直接开到java源⽂件,缺点在于只能反编译出开发时的java⽂件,⽽开发时使⽤的lib包不能反编译出来。
教你如何修改游戏数据!! [申精] 绝对原创手打本人第一次发技术贴,如果有不对请指出。
谢谢昨天玩一个塔防游戏,实在玩不过了,就萌生了作弊的想法。
大家从塞班时代过来的都知道,塞班有个神器就是八门神器,便上网搜了下,发现WP 没有类似的软件。
无奈中,便自己摸索了一个下午,终于成功了。
手机党纯手打,希望支持下。
1.首先我们要准备一下几种工具,在智机网都找的到第一个File browser ( 一种支持xap 安装的文件管理器) 第二个缓存清理者(相信大家都不陌生)2. 大家打开filebrowser 文件管理器,打开\applications\data 打开后大家可以看到一大堆文件夹,而且都是名字很长的,这些就是大家安装的程序了。
但是你要找到游戏所在的文件夹,这时就看到第三步了 3.要找到游戏所在文件夹有点费时间,首先打开缓存清理者,看看有没有你要找的游戏如果找到了,直接去看4。
如果没有找到就有点麻烦了,但是也是很简单的,例如。
用文件管理器进第一个文件夹(也就是名字很长的) 进入后可以看到DATA 文件夹。
打开后一般可以看到有以下文件夹Cache ,history ,cookie,Isolatedstore 等等。
如果大家没有看到Cache 这个文件夹的话,就说明这个软件没有缓存,也就是在缓存清理者上看不到。
这时你就可以创建一个文件夹改名为'Cache' 然后打开缓存清理者。
就可以看到这个文件夹是什么软件了!以此类推直到找到你想改的游戏为止4. 这时进行第四步,修改游戏了。
大家找到你想改的游戏的文件夹后,打开此文件夹(也就是名字很长的那个文件夹),然后打开此文件夹下的Data 文件夹。
然后打开Isolatedstore 文件夹,在此文件夹内就可以看到一些xml 或者没有后缀的文件,基本上这些文件只有几个的。
并不是很多然后开始第五步前要告诉大家,xml 文件或者其他的系统是打不开的,要修改的话就要重命名,把后缀改成.txt 没有后缀的加上后缀.txt [[但是大家要记住,改完后要改回原来的名字,改了后缀的就把后缀改回去,加了后缀的就去掉后缀]然后开始第五步 5. 一般大家要修改的数据都是解锁一些武器或者修改金钱。
1、baksmali:classes.dex反编译为smali格式(smali:smali格式编译打包为classes.dex,但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助)2、dex2jar:classes.dex转为jar包3、jdgui:jar反编译并阅读操作顺序:apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar 处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali 里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。
注意安装时要先删除原来手机里的版本,因为签名不同。
1、apk用zip解开,得到classes.dex2、用baksmali处理为smali(只是反编译看代码就不需要这一步,修改才用) java -jar baksmali-1.4.1.jar -x classes.dex得到out目录,里面是smali文件3、用dex2jar处理classes.dex为jar包dex2jar.bat classes.dex得到classes.dex.dex2jar.jar4、用jdgui打开classes.dex.dex2jar.jar好了,可以看代码,但还不能直接修改,需要对比着来修改smali文件改好后,用java -jar smali-1.2.6.jar -o classes.dex out得到修改后的classes.dex,用这个文件替换fishing_joy_1.apk中的同名文件但这个apk是不能用的,还没有进行重新签名先用keytool生成keystorekeytool -genkey -keystore mykeystore -alias mykeystore -validity 999 把apk中的META-INF删除,再用jarsigner 签名jarsigner -verbose -keystore mykeystore -signedjar fishing_joy_1_signed.apk fishing_joy_1.apk mykeystore先卸载原来手机中安装的这个游戏,再用fishing_joy_1_signed.apk安装最后工作目录是这个样子。
APK应⽤程序的解包、修改、编辑、汉化、打包及应⽤第⼆部分:三星闭源系统apk⽂件的处理,汉化和签名在这⼀部分,我们要进⼊实战。
⾸先,利⽤⼀个具体的例⼦来阐述apk⼯具包的使⽤,对apk⽂件进⾏解包、汉化、打包和签名。
然后,我们来对付三星闭源系统的apk程序,达到我们修改、汉化和美化的⽬的。
我们假定所有apk⽂件都是单个独⽴⽂件,不含odex⽂件(在官版ROM中,通常每个apk都分成两部分,第⼀部分是apk,第⼆部分是odex。
将它们合并是另⼀个题⽬,这⾥不作叙述)。
1. 配置框架(Framework)环境在处理APK⽂件时,apktool需要框架⽂件(framework-res.apk)来解码和打包。
apktool已经包含了标准的框架,所以在⼤多数APK⽂件的解包时,不需要另外提供框架⽂件。
但是,某些制造商(例如三星)使⽤了他们⾃⼰的框架⽂件,为了解包,就不得不从⼿机中或从ROM中把框架⽂件(framework-res.apk)提取出来,然后安装到计算机。
安装命令是:apktool if framework-res.apk安装后就会得到:~\apktool\framework\1.apk注意:三星系统(例如:I897)有两个框架⽂件:framework-res.apk和twframework-res.apk。
在使⽤apktool之前,要安装这两个框架⽂件。
安装⽅法同上:apktool if framework-res.apkapktool if twframework-res.apk安装后就会得到:~\apktool\framework\1.apk和~\apktool\framework\2.apk。
许多⼈拿来apktool⼯具包⽤,说解不开包,运⾏出错。
原因是没有配置框架环境。
2. akp⽂件的汉化和修改我⾸先来讲对⼀般的(⾮三星)apk应⽤程序进⾏解包、汉化和打包。
为你们⽅便和叙述⽬的,我在上传的apktool和apk manager⼯具包⾥都带了⼀个⼩的apk应⽤程序SilentBoot_EN.apk。
破解apk教程破解APK教程(500字)APK是Android平台上常见的应用程序格式,而破解APK则是指通过修改APK文件的代码或数据,使得原本有限的功能得到解锁或扩展。
破解APK的过程需要一定的编程技术和知识,下面将介绍一个简单的破解APK的教程。
首先,我们需要一个APK文件,可以通过从网上下载一款需要破解的应用程序得到。
然后,我们需要一个反编译工具,比如常用的apktool。
将APK文件拖动到apktool的执行文件上,即可对其进行反编译。
接下来,我们得到的是一个包含源代码和资源文件的文件夹。
我们可以使用任何文本编辑器来修改源代码,但是通常使用Android Studio这样的IDE会更便捷。
打开Android Studio后,点击“Open an Existing Project”并选择反编译得到的文件夹。
稍等片刻,我们就可以在Android Studio中查看到整个项目的结构。
很多APK破解的重点在于修改源代码,如跳过登录验证、解锁高级功能等。
我们需要仔细查找代码中的关键逻辑,常见的位置有MainActivity或者LoginActivity等入口类。
找到我们需要修改的功能代码后,我们可以根据实际需求进行修改。
在修改代码过程中,我们需要注意保留原有的代码逻辑,避免引发其它错误。
此外,可以通过注释掉某些代码来暂时关闭某些功能,以方便我们测试修改的效果。
修改完代码后,记得保存文件。
除了修改代码,我们有时还需要修改资源文件,如图片、布局等。
可以使用图像处理软件来修改需要的图片,然后替换对应的文件即可。
布局文件的修改可以通过简单的XML编辑器来实现。
最后,我们需要重新打包APK并签名,使我们的修改生效。
在Android Studio中,点击菜单栏的“Build”选项,选择“Build Bundle(s)/APK(s)”,然后选择“Build APK”。
稍等片刻,我们将得到一个新的APK文件。
新的APK文件完成了我们的破解操作,但需要注意的是,在实际使用中破解APK可能涉及到违法行为,且可能会损害原应用程序的开发者的合法权益,这是需要谨慎考虑的。