apk安卓软件反汇编的一些经验和总结

2025-11-02 17:02:24

1、有米去除 smail 代码

 invoke-virtual {v2, v0, v1}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V

2、 菜单删除  直接删除

invoke-interface {p1, v1, v3, v3, v0}, Landroid/view/Menu;->add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;

3、添加一些信息

   <PreferenceCategory android:title="汉化信息及免责声明">

        <Preference android:summary="本汉化软件仅为技术共享等制作,作品不用于任何商业目的,如果您喜爱此APP,请支持正版!" />

        <PreferenceScreen android:layout="@layout/about_logo" android:key="about_logo">

            <intent android:action="android.intent.action.VIEW" android:data="http://bbs.hiapk.com" />

        </PreferenceScreen>

    </PreferenceCategory>

<PreferenceCategory android:title="汉化信息">

        <PreferenceScreen android:title="安智汉化组 Tomi汉化" android:summary="主页:http://www.anzhi.com\n论坛:http://bbs.anzhi.com">

            <intent android:action="android.intent.action.VIEW" android:data="http://bbs.anzhi.com" />

        </PreferenceScreen>

    </PreferenceCategory>

4、安 沃去广告重点  http://r2.adwo.com/adweb    http://r2.adwo.com/adfs

解开apk,搜索所有文件里的http:字样(用UltraEdit搜),带ad字样的多半是广告链接,用空符替换,比如“http://ad.***”就改成“”就阻止了广告联网了,此时广告控件仍在,只是没内容。然后在manifest.xml里删除Adview控件那几行代码。空白控件就不会出现了。貌似有所谓的广告杀手软件能干这事,没试过。

还有些广告是自定义的,并未使用adview,这种有的直接“http://ad.***”就改成“”后就可能不再显示了,不过只是少数。另外那些软件手动去广告很麻烦的。

5、对话框

反编译apk,在.method public onCreate(Landroid/os/Bundle;)V (即窗口创建子程序 一般在AndoroidMainfest.xml中会有声明)下添加以下代码即可

const-string v0, "这里是弹出的提示"

    const/4 v1, 0x1

    invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;

    move-result-object v0

invoke-virtual {v0}, Landroid/widget/Toast;->show()V

复制代码

说明:

a. const-string v0, "这里是弹出的提示",字串常量,对应Toast.makeText(EX05_01.this ,"Toast", Toast.LENGTH_LONG).show();的第二个参数。

b. const/4 v1, 0x1 16进制,对应Toast.LENGTH_LONG常量

c. invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText,调用. makeText()方法,  这个很重要了

d. move-result-object v0 调用结果返回值为v0

e. invoke-virtual {v0}, Landroid/widget/Toast;->show()V  调用show()方法

6、网址跳转

   .line 15

    new-instance v0, Landroid/content/Intent; // 这里是定义Intent 对象

    const-string v1, "android.intent.action.VIEW" // 这个是设置Intent的Action_View

    .line 16

    const-string v2, "http://bbs.urenkz.com"  // 这里为网页地址,http:// 大家都懂

    invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;     // 这里是用URI把链接转义

    move-result-object v2

    .line 15

    invoke-direct {v0, v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V    // 这里为实例化一个跳转的intent对象,v0,v1,v2 ,v0是对象,v1,v2是参数

    .line 17

    .local v0, intent:Landroid/content/Intent;

    const-string v1, "com.android.browser"    // 这是系统浏览器的包名

    .line 18

    const-string v2, "com.android.browser.BrowserActivity"   // 系统浏览器的主类,也就是启动类

    .line 17

    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;  //把设置好的v1,v2,用对象v0设置好ClassName

    .line 19

    invoke-virtual {p0, v0}, Lcom/tencent/pao/BreezeGame;->startActivity(Landroid/content/Intent;)V  // 这里是关键,启动跳转, Lcom/tencent/pao/BreezeGame 这个要替换成你项目的smali 的反编译格式的包路径</span>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢