zoukankan      html  css  js  c++  java
  • 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表示就是u670du52a1u6a21u5f0f 。每一个汉字用4个字符表示,u表示为16进制的unicode码。好了,正确的汉译是:
    const-string v5, "u670du52a1u6a21u5f0f "
    网上有中文字符与16进制unicode码的对照表或转换工具。

    2) 修改图标标签

    每一个apk文件都有一个“图标标签”。将apk程序安装进手机后,在图标下面显示图标标签文字。这个图标标签的内容是可以修改的。在 esvalues下找到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,其它内容保持不变即可。这种改法就是不给广告显示空间,当然你就看不到广告了。

  • 相关阅读:
    JS判断浏览器
    【JS】时间不足10位补0方案
    【js学习小计】
    【Tangram】 通过监听进行事件触发
    JavaScript CSS Style属性对照表
    Resolve and Remove "BAD PASSWORD: It is Based on a Dictionary Word "in Linux
    [C++]关键字explicit
    [转]CentOS设置程序开机自启动的方法
    SqlServerCLR聚合函数:分组连接字符串
    vmware centos 虚拟机复制
  • 原文地址:https://www.cnblogs.com/pingxin/p/p00107.html
Copyright © 2011-2022 走看看