利用破解版百度广告框架去百度广告

原创
2015/01/09 23:04
阅读数 2.8K

反编译apk文件,一般是用apktool反编译apk,然后剔除com\baidu\mobads目录的.smali文件.

再用notepad++搜索所有的.smali文件(查找>>文件查找).初步定为那些类调用了百度广告api.

可能没有查找得到.如果查找的到则

对dex文件经行dex2jar,使用JDGUI打开jar文件,看看刚才定位的那些类怎么调用百度广告的什么api.

我反编译了一个apk,在jar中没有找到调用广告的api的代码.看来只用在layout布局文件查找.

其中一个布局文件发现了这样的一段代码

<com.baidu.mobads.AdView android:id="@id/ads" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentBottom="true" baiduadsdk:adSize="0" baiduadsdk:adId="1003fbb5" />

好,就是这段代码使得广告起作用.

所以,只需要将jar中的com.baidu.mobads.AdView.class替换掉就可以了.

接着,打开Eclipse 新建一个项目,项目名任意.

接着创建一个AdView类,包名com.baidu.mobads.

代码如下

package com.baidu.mobads;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.RelativeLayout;

public final class AdView extends RelativeLayout {
	public AdView(Context paramContext) {
		this(paramContext, true, AdSize.Banner, "");
	}

	public AdView(Context paramContext, AttributeSet paramAttributeSet) {
		this(paramContext, paramAttributeSet, true, AdSize.Banner, "");
	}

	public AdView(Context paramContext, AttributeSet paramAttributeSet,
			boolean paramBoolean, AdSize paramAdSize, String paramString) {
		super(paramContext, paramAttributeSet);
	}

	public AdView(Context paramContext, AdSize paramAdSize, String paramString) {
		this(paramContext, true, paramAdSize, paramString);
	}

	AdView(Context paramContext, boolean paramBoolean, AdSize paramAdSize,
			String paramString) {
		this(paramContext, null, paramBoolean, paramAdSize, paramString);
	}
}


当你粘贴着代码进去的时候,发现了很多错误.别急.

Context,AttributeSet, RelativeLayout 这些出现了错误吧,关键没有import吧?

要不要复制个android.jar到这项目?不用.因为决定一个类的是包名和类名.

那就创建一个Context类 ,包名android.content.代码如下

package android.content;

public class Context {

}

同样再创建一个AttributeSet, 包名android.util.代码如下

package android.util;

public class AttributeSet {

}

 

同样再创建一个AttributeSet, 包名android.util.代码如下

package android.widget;

import android.content.Context;
import android.util.AttributeSet;

public class RelativeLayout {

	public RelativeLayout(Context paramContext, AttributeSet paramAttributeSet) {
		// TODO Auto-generated constructor stub
	}
}

到了这里还有一个地方有问题.AdSize!!!

在com.baidu.mobads包下创建一个枚举

package com.baidu.mobads;

public enum AdSize {
	Banner
}

好了,一切错误消失.有人会问,上面那几个类怎么都不写实现?

首先,没有代码调用AdView的方法吧,那就不写AdView的方法呗,如果有调用就直接写这个方法,但不用写里面的方法体.有return的要return 一个必要的值,这个值得慢慢斟酌.

在写Context类的使用,AdView也没有调用到Context的方法吧.那也不写里面的方法了.

接着随便创建一个类,添加个空的main方法.

点击run,com.baidu.mobads.AdView.class 就出来了.

打开该项目的目录,找到bin目录.找到AdView.class

找到刚才反编译出来的jar文件,用winrar之类工具打开,

删除com/baidu/mobads下的所有文件

AdView.class放在jar压缩包的com/baidu/mobads目录下.直接拖进去就行了.

然后使用jar2dex转换回dex ,替换掉原来apk的dex文件.重新签名.ok.

好神奇么?其实java不但代码可以复制粘贴,连编译出来的.class文件也可以随便复制粘贴删除.

只要保证必要的框架完整就可以了.想不被破解都难呀.

对于其他平台的广告同样适用,如谷歌广告.

如果再狠一点的话,把整个百度广告的api都撸一遍.想破解百度广告的话,dex2jar.

删掉百度的,将自己的山寨框架替换进去.再jar2dex. 再替换掉原来的dex,重新签名OK.

 

不要问我是谁,咱是雷锋的同党!咱只为用户谋福利!

警告:不为用户谋福利,而利用此法为自己谋私利钱财的,后果自负!

展开阅读全文
打赏
0
17 收藏
分享
加载中
牛叉
2015/01/10 07:51
回复
举报
更多评论
打赏
1 评论
17 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部