本帖最后由 世事繁华皆成空 于 2015-3-4 12:59 编辑
软件包名:com.dali.vipshare
版本号:1.1.0
利用工具:模拟器,APKIDE
软件工作原理:通过点击图片调用各大帐号分享网址,再通过线性布局将图片显示出来,其中也包含了广告类
声明,我的水平属于小菜一类,不过我比较喜欢和大家交流,我把我学到的,都会分享出来,让更多的人学到,文中有什么不足,错误的地方还望大神指点
原版样图:
我们一共可以发现有两个广告,而且广告右上角写的很明白,有米,这会对我们之后处理有很大帮助
好了,废话不多说我们用反编译工具打开,进入AndroidManifest.xml文件
我们先来看一下权限
[Java] 纯文本查看 复制代码 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dali.vipshare">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
通过观察,我们发现下面三个比较多余
<uses-permission android:name="android.permission.VIBRATE"/> 允许设备震动
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> 创建快捷方式
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 允许精准定位
权限不清楚的可以百度查一查,其实我也不太清楚,大家一起学习吗
我们可以把这三条去除,当然也可以忽视,这并不会影响我们去除广告
好了,我们往下搜索
[Java] 纯文本查看 复制代码 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="com.dali.vipshare.AppContext" android:theme="@style/Theme.Base.AppCompat.Light">
<activity android:label="@string/app_name" android:name="com.dali.vipshare.ui.actvity.SplashActivity" android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="com.dali.vipshare.ui.actvity.MainActivity"/>
<activity android:label="@string/app_name" android:name="com.dali.vipshare.ui.actvity.BrowserActivity"/>
<service android:enabled="true" android:name=".service.UploadService"/>
<activity android:name="cn.domob.android.ads.DmActivity" android:theme="@android:style/Theme.Translucent"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:name="net.youmi.android.AdBrowser" android:theme="@android:style/Theme.Light.NoTitleBar"/>
<service android:exported="false" android:name="net.youmi.android.AdService"/>
<service android:exported="false" android:name="net.youmi.android.ExpService"/>
<receiver android:name="net.youmi.android.AdReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
</application>
</manifest>
很快就看到敏感的字眼,domob和youmi
[Java] 纯文本查看 复制代码 <activity android:name="cn.domob.android.ads.DmActivity" android:theme="@android:style/Theme.Translucent"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:name="net.youmi.android.AdBrowser" android:theme="@android:style/Theme.Light.NoTitleBar"/>
<service android:exported="false" android:name="net.youmi.android.AdService"/>
<service android:exported="false" android:name="net.youmi.android.ExpService"/>
<receiver android:name="net.youmi.android.AdReceiver">
activity意为活动项,是我们肉眼能看到的东西,它表现就是第一张模拟图中的广告,service为服务项,我们看不到,它会在后台执行
知道了这个,我们把这些全部删除,要知道有始就要有终,每个 < 一定要找到对应的 />,
所以我们总共需要去除如下代码,intent为意图的意思,一般创建activity的时候需要创建到
[Java] 纯文本查看 复制代码 <activity android:name="cn.domob.android.ads.DmActivity" android:theme="@android:style/Theme.Translucent"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:name="net.youmi.android.AdBrowser" android:theme="@android:style/Theme.Light.NoTitleBar"/>
<service android:exported="false" android:name="net.youmi.android.AdService"/>
<service android:exported="false" android:name="net.youmi.android.ExpService"/>
<receiver android:name="net.youmi.android.AdReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
好了,现在AndroidManifest.xml的修改已经完成了,当然我们还需要在这个文件中获取到主活动的位置
android:name="com.dali.vipshare.ui.actvity.MainActivity"
看到了我们记住就好,待会需要查到
接下来我们向上次修改铃声多多一样,看看有没有调用可疑的网址,依然正则网页表达式
我们只看到如下网页,这里也验证了最开始我说的,软件实质功能就是调用一些帐号分享网,不信的可以自己打开看看
看来我们并没有发现可疑网址,放弃
接来下,我们可以搜索一下敏感字眼,如ad,我们试试看,注意我们搜索到的ad字眼肯定不会是单词,如pad,download,这些跟广告是无关的
我们看到了这里,点进去看看
哈哈,一下子就明良了,这就是主布局文件,里面的布局结构跟我们看到的软件真实图是一样的,两个main_ad就是广告的布局,我们分别把两个
android:layout_width="fill_parent" android:layout_height="wrap_content"都修改为android:layout_width="0.0dip" android:layout_height="0.0dip"
布局文件都分布在layout这个文件下,所以之后的文件我们可以跳过不看了,到底已经可以说是广告已经去除了,当然我们是个完美主义者,不如再完整修改一下把
还记得我说要记下的主活动位置吗,我们来到这里
额,看不懂,,,,,我们打开java源码
看到了吗。这些就是初始化广告的方法,知道了这些,我们回到smail下,找到这个方法i
smail下是.method private i()V
说明一下new-instance,就是初始化的意思,
[Java] 纯文本查看 复制代码 new-instance v0, Lnet/youmi/android/banner/AdView;
sget-object v1, Lnet/youmi/android/banner/AdSize;->FIT_SCREEN:Lnet/youmi/android/banner/AdSize;
invoke-direct {v0, p0, v1}, Lnet/youmi/android/banner/AdView;-><init>(Landroid/content/Context;Lnet/youmi/android/banner/AdSize;)V
iput-object v0, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->C:Lnet/youmi/android/banner/AdView;
new-instance v0, Lnet/youmi/android/banner/AdView;
sget-object v1, Lnet/youmi/android/banner/AdSize;->FIT_SCREEN:Lnet/youmi/android/banner/AdSize;
invoke-direct {v0, p0, v1}, Lnet/youmi/android/banner/AdView;-><init>(Landroid/content/Context;Lnet/youmi/android/banner/AdSize;)V
iput-object v0, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->D:Lnet/youmi/android/banner/AdView;
iget-object v0, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->A:Landroid/widget/RelativeLayout;
iget-object v1, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->C:Lnet/youmi/android/banner/AdView;
invoke-virtual {v0, v1}, Landroid/widget/RelativeLayout;->addView(Landroid/view/View;)V
iget-object v0, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->B:Landroid/widget/RelativeLayout;
iget-object v1, p0, Lcom/dali/vipshare/ui/actvity/MainActivity;->D:Lnet/youmi/android/banner/AdView;
invoke-virtual {v0, v1}, Landroid/widget/RelativeLayout;->addView(Landroid/view/View;)V
这些代码就是初始化广告并显示出来的代码,我们删除,也许还有更完美的删除方法,我只删除了这部分,也达到了去广告的目的,欢迎大神指点
接下来我们就编译安装查看一下效果吧
好了,广告已经完美去除了哦,文中所圈部分无任何功能,强迫症也可以把这个也去除了,同样在layout的主布局文件中
<TextView android:textSize="18.0sp" android:textColor="@color/white_main" android:gravity="center" android:background="@color/red_dali" android:padding="20.0dip" android:layout_width="fill_parent" android:layout_height="120.0dip" android:text="善待共享帐号,请勿修改密码!谢谢!" />
教程结束!又不知不觉写了一个多小时,
|