首页 > android > 破解教程 > 京东阅读epub解密
2015
08-07

京东阅读epub解密

某东阅读畅读期间,下载的不少书籍,可以在会员期间阅读,就是说,会员过期了就可以阅读,国内的比较出名阅读软件例如,ireader,多看等,都有drm保护,既只能在某个平台上阅读。尝试分析,

由于下载后可以断网离线阅读:初步估计,解锁密匙,以及有效期等相关信息 都是保存在本地,
查看数据库文件: /data/data/com.jingdong.app.reader/databases/book.db 数据库文件,发现以下字段:

京东阅读epub解密 - 第1张  | 大白的小窝

cert:字段值分为两种:
1:以"mmm_"开头的密匙(试用密匙既有时间限制)
2:以"000”开头的密匙(永久密匙)
3:其中有个字段"id",根据设备id生成(下载书籍在别的手机,无法打开)
package com.jingdong.app.reader.epub.paging;
public final class DecryptHelper {//解密关键性代码 static {
		System.loadLibrary("ebr");
		System.loadLibrary("jebdrm");
	}
	public DecryptHelper() {
		super();
	}
	/** 
	* @Title: close 
	* @Description: TODO(解密完成后关闭)     设定文件 
	* @throws 
	*/
	public static native void close();
	public static native int create();
	/** 
	* @Title: decrypt 
	* @Description: TODO(解密方法) 
	* @param paramArrayOfByte1 加密文件的byte[] 数组大小256
	* @param paramInt1 已经读取的byte大小
	* @param paramArrayOfByte2  固定大小的空byte[] 大小问8192
	* @param paramInt2 固定值8192
	* @param paramInt3  解密状态 0或1 用于判读解密是否完成
	* @return    设定文件 
	* @throws 
	*/
	public static native int decrypt(byte[] paramArrayOfByte1, int paramInt1,
			byte[] paramArrayOfByte2, int paramInt2, int paramInt3);
	/** 
	* @Title: init 
	* @Description: TODO(解密初始化) 
	* @param paramString1 cert密匙
	* @param paramString2 random随机参数
	* @param paramString3 固定字符串:0001f2pNtdZMCn6kd/ApbXGSKxZ0WklBT3p5WmR6U0FqWlE=
	* @return    设定文件 
	* @throws 
	*/
	public static native int init(String paramString1, String paramString2, String paramString3);
}

上面是解密的关键代码,即解密在jebdrm、ebr、库文件中完成,初始化的cert可以通过解析数据库直接获得,固定字符串,在客户端中可以找到,还有一个参数”id”
这个id生成的相关算法:

package com.jingdong.app.reader.util.au;
//生成id的代码
import com.jingdong.app.reader.data.Ebr;
import android.content.Context;
import android.telephony.TelephonyManager;
public class u {
	private static Ebr a;
	static {
		try {
			System.loadLibrary("ebr");
		} catch (Exception v0) {
			System.err.println("加载SO文件出错");
		}
	}
	public u() {
		super();
	}
	/** 
	* @Title: a 
	* @Description: TODO(识别id的获取) 
	* @param context
	* @return    设定文件 
	* @throws 
	*/
	public static String a(Context context) {
		TelephonyManager telephonyManager = (TelephonyManager) context
				.getSystemService(context.TELEPHONY_SERVICE);
		return b().API01(String.valueOf(telephonyManager.getDeviceId()) + "ibyxt270");
	}
	private static Ebr b() {
		if (a == null) {
			a = new Ebr();
		}
		return a;
	}
}

上面这连个代码是生成解密初始化相关信息的功能,接着就是解密了,用第一段的代码的中的natice方法

public static native int decrypt(byte[] paramArrayOfByte1, int paramInt1,
			byte[] paramArrayOfByte2, int paramInt2, int paramInt3);

京东缓存的电子书位置为sdcard//Android/data/com.jingdong.app.reader/files/epub/”编号”/content/目录下,尝试读取其中任意一个文件

	public static void a(String arg15, String outpath) throws IOException {
		int v0_4;
		int v9;
		long v4;
		byte[] v8;
		byte[] v7;
		int v2_1;
		ByteArrayOutputStream v1_1;
		FileInputStream v3;
		File v0_3;
		DecryptHelper.init(a, b, c);
		v0_3 = new File(arg15);
		v3 = new FileInputStream(v0_3);
		v1_1 = new ByteArrayOutputStream();
		v2_1 = 8192;
		v7 = new byte[v2_1];
		v8 = new byte[256];
		v4 = v0_3.length();
		v2_1 = 0;
		while (true) {
			v9 = ((InputStream) v3).read(v8, 0, 256);
			if (v9 > 0) {
				if (v4 - 256 > 0) {
					v4 -= 256;
					v0_4 = 0;
				} else {
					v0_4 = 1;
				}
				v0_4 = DecryptHelper.decrypt(v8, v9, v7, v7.length, v0_4);
				if (v0_4 >= 0) {
					v0_4 -= v2_1;
					v1_1.write(v7, 0, v0_4);//将解密的byte[]存放在ByteArrayOutputStream中
					v2_1 = v0_4 + v2_1;
				}
			} else {
				break;
			}
			v1_1.close();
			//outwrite(v1_1, outpath);
		}
DecryptHelper.close();}

这样基本上 解密就完成了可以将解密得到的ByteArrayOutputStream写入到文件中,如何使用京东的lib文件,可以安装包的路径模仿建立对应的类文件,另外就是在解密的时候过滤掉图片,京东的图书图片全部没有加密,历遍解密文件后,压缩成zip文件,扩展名改为epub即可,

ps:最后就是,成品软件暂时不对外放出(我拍被查水表!=_=),如果有童鞋需要解密京东epub,给我提供个JEB文件和你的设备imei 发送到:xiaobaiyey@outlook.com即可 ,我可以帮忙解密

最后编辑:
作者:xiaobai
这个作者貌似有点懒,什么都没有留下。

京东阅读epub解密》有 12 条评论

  1. 听雨客舟 说:

    大神好厉害!多看阅读是不是也是类似的

  2. 〃灯火○阑°珊下丶 说:

    厉害啊,不过不看小说的路过

  3. smart886 说:

    我现在都用流氓百度看小说,流氓会自动帮你搜到最新的盗版章节……………

  4. PumpkinSin 说:

    请问pdf的同样可以么

  5. 四季豆老爹 说:

    入了一年的东阅读,又入了kindle.畅读卡里1000本书都还没看基本,kindle里已经又买买买了十多本。
    版权要钱我知道啊,但是只能在pc或者手机端阅读的话,体验确实不是读书,只能叫做“看”。
    so,我想把某东的书转到kindle…
    help me….

  6. quiteafew 说:

    有没有研究过掌阅ireader的解密?

留下一个回复

你的email不会被公开。