apk混淆打包和反编译(转)
前面有人写过了,我就直接引用了,大家就不乱找了。以后有问题再继续更新。
一.混淆打包、编译
1.Android 代码混淆。http://blog.csdn.net/zjclugger/article/details/41700041
2.Android 混淆代码总结。http://blog.csdn.net/lovexjyong/article/details/24652085
3.代码混淆详解。http://blog.csdn.net/z157794218/article/details/40039785
4. Android开发把项目打包成apk。http://blog.csdn.net/luoyin22/article/details/7862742
二.反编译及处理
1. Android APK反编译。http://blog.csdn.net/vipzjyno1/article/details/21039349/
2. apk反编译获取完整源码 及 apk反编译后的处理 http://blog.csdn.net/wh_19910525/article/details/7915738/
1) 汉化apk应用程序
汉化apk就是 把 反编译之后apk 下的res/values文件夹内string.xml文件的内容 汉化(注意:我们的例子里 只有一个string.xml,有时候 可能 不止 一个 *xml 文件,那么 我们 需要把 相应的 位置 都汉化)。
一个apk应用在汉化后应该能在英文和中文系统下都能使用。/values目录下的是英文语言包。为了建一个中文语言包,与/values并行创建一个子文件夹:/values-zh-rCN(必须用这个文件名!)。这里values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。
把/values文件夹里的strings.xml等语言文件复制进/values-zh-rCN。在我们的例子中,只有strings.xml一个文件。
进入/values-zh-rCN,用文本编辑器打开strings.xml,然后你就翻译吧,把英文描述译成相应的中文。
高级内容:以上的汉化是修改string.xml,把英文译成相应的中文就好了,然后打包和签名。但是,在有些apk文件里,所显示的字符文字并不都在xml文件里。apk原作者把某些字符写在代码中。反编译后,存放在/smali文件夹里。一层一层地找下去,最后你会看到一大堆Dalvik码文件,都是以.smali为文件扩展名。举一个例子,用文本编辑器打开某个.smali文件,看到:
const-string v5, "ServiceMode"
“ServiceMode”会在apk执行时显示为英文。因此,需要汉化。在I897 ROM里,用工程模式特殊代码看到的多半属于这一类。汉译起来非常花时间。我们要把ServiceMode译成“服务模式”。怎么处理呢?你不能把const-string v5, "ServiceMode"直接改成const-string v5, "服务模式"。打包会失败的。正确的做法是把相应的中文字符用16进制的unicode来表示。例如:把“服务模式”用16进制的unicode表示就是\u670d\u52a1\u6a21\u5f0f 。每一个汉字用4个字符表示,\u表示为16进制的unicode码。好了,正确的汉译是:
const-string v5, "\u670d\u52a1\u6a21\u5f0f "
网上有中文字符与16进制unicode码的对照表或转换工具。
2) 修改图标标签
每一个apk文件都有一个“图标标签”。将apk程序安装进手机后,在图标下面显示图标标签文字。这个图标标签的内容是可以修改的。在\res\values下找到strings.xml,修改其中的一行:
<string name="app_name">图标标签</string>
例如:<string name="app_name">静音启动</string>
同理,如果是窗口小插件,要修改widget_name。
3) 去掉apk中的广告
有很多apk应用都带有广告。为了去掉程序中的广告,要修改main.xml文件与广告有关的内容。在/res目录下找到文件main.xml。通常在/layout目录下,有时也被放在其它目录下。甚至,有时不存在main.xml文件,广告行被放在其它xml文件内。只能细心逐个文件进行查找。无论哪一种情况,查看其内容,你会看到有一项类似的命令如下。这就是广告显示。
<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />
将其改为:
<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />
可以看到,关键是要把fill_parent改为0.0dip,把wrap_content改为0.0dip,其它内容保持不变即可。这种改法就是不给广告显示空间,当然你就看不到广告了。
apk混淆打包和反编译(转)的更多相关文章
- .Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译
apk(android package)就是我们安卓系统的安装文件,可以在模拟器和手机中直接打开安装,从项目中打包apk有几种方式可取 一.最简单的方法(类似我们的winfrom) 只要我们调试或者运 ...
- 大富豪APK安卓客户端的反编译修改和重新打包
大富豪APK安卓客户端的反编译修改和重新打包 修改安装我们需要几个工具 DFH_3.4.X (用于修改客户端) dnsPy (用于修改.dll文件) 大富豪加解密.exe ( 用于加 ...
- C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 今天讲讲如 ...
- jar包混淆和防反编译工具proguard使用简介
平时都是用java语言做开发,特殊情况下,需要对编译出的jar包混淆,防止被轻易的反编译出来看到源码,用的proguard工具,下面简单记录一下工具使用过程. 1.下载程序包,可以去https://w ...
- Android对apk源代码的改动--反编译+源代码改动+又一次打包+签名【附HelloWorld的改动实例】
最近遇到了须要改动apk源代码的问题,于是上网查了下相关资料.编写了HelloWorld进行改动看看可行性,经过实验证明此方案可行,而且后来也成功用这种方法对目标apk进行了改动,仅仅只是须要改动的部 ...
- 详细讲解Android对自己的应用代码进行混淆加密防止反编译
1.查看项目中有没有proguard.cfg. 2.如果没有那就看看这个文件中写的什么吧,看完后将他复制到你的项目中. -optimizationpasses 5 -dontusemixedcasec ...
- APK中java代码反编译
Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度. 第一种情况:无混淆无加密无加壳.直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上 ...
- apk混淆打包注意事项
混淆打包搞了好几天才初步了解,其中碰到很多Debug正常,Release的apk不能用,基本都是第三方的jar的问题,所以要排除混淆. 1. Json解析对象出错 用到fastJson或者GJson的 ...
- vue打包后反编译到源代码(reverse-sourcemap)
因为突然的疫情把我困在家了,家里的电脑没有源代码,但是需求还要改,工作还得继续... 从服务器下载了之前上传的打包后的文件,找了一圈反编译方法,得救了,在此记录一下. 1.npm install -- ...
随机推荐
- POI解决内存溢出问题
在POI3.8中SXSSF仅仅支持excel2007格式是对XSSF的一种流的扩展.目的在生成excel时候,需要生成大量的数据的时候,通过刷新的方式将excel内存信息刷新到硬盘的方式,提供写入数据 ...
- Hibernate错误——No row with the given identifier exists
错误 是用的是Hibernate自动建立的数据表,在进行数据库操作时,出现错误No row with the given identifier exists 解决 关系数据库一致性遭到了破坏,找到相关 ...
- Linux的 crontab定时任务小记
编辑任务 crontab -e 查看任务 crontab -l 任务配置基本格式:* * * * * command分(0-59) 时(0-23) 天(1-31) 月(1-12) 周(0-6,0代 ...
- Docker Swarm:经济高效的容器调度
本文探讨了几种容器调度策略,并以内存约束为例,讨论了如何利用Docker Swarm,通过资源约束实现容器的合理调度.其中,对容器资源的约束,包括硬约束和软约束,硬约束是指内存资源的实际限制条件,而软 ...
- 10Redis键空间通知(keyspace notifications)
Redis的键空间通知(keyspace notifications)功能是自2.8.0版本开始加入的,客户端可以通过订阅/发布(Pub/Sub)机制,接收那些以某种方式改变了Redis数据空间的事件 ...
- Vue电商后台管理系统项目第2天-首页添加表格动态渲染数据&分页
0x01.使用Github学习的姿势 基于昨天的内容,今天的内容需要添加几个单文件组件,路由文件也需要做相应的增加,今天重点记录使用Element-UI中的表格组件实现数据动态渲染的实现流程和分页功能 ...
- 异常处理之多重catch
package com.sxt.exception.test1; import java.util.InputMismatchException; import java.util.Scanner; ...
- 学习C#泛型
C#泛型详解 C#菜鸟教程 C#中泛型的使用
- 1878: [SDOI2009]HH的项 莫队算法-离线查询区间内部不同数字的个数
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...
- JavaScript setTimeout this对象指向问题
上面这幅图片是原始的效果, 现在想鼠标移到图标上,显示图标的提示,但需要延时,也就是鼠标滑至图标上,并不立刻显示,而是等1秒后显示. html部分 <div class="porHea ...