爱加密加固之后恢复原始的log
来源:互联网 发布:卡帝乐鳄鱼 知乎 编辑:程序博客网 时间:2024/05/13 15:31
转:http://bbs.pediy.com/thread-217079.htm
这篇文章是接上一篇的一个改进,http://bbs.pediy.com/thread-216965.htm
上一篇是介绍log的原理,以及自己实现一个log,并且由xposed加载起来,使我们自己的log能够显示出来,现在我们要更进一步,将加固应用原始的log也给显示出来。
准备一个apk
我们自己写一个apk,然后用各种方式输出log,demo apk很简单,只要输出几句log就行了
Log.e("LOGTESTS", "this is a log protected by ijiami");Log.i("LOGTESTS", "this is a log protected by ijiami");Log.v("LOGTESTS", "this is a log protected by ijiami");Log.w("LOGTESTS", "this is a log protected by ijiami");Log.d("LOGTESTS", "this is a log protected by ijiami");
然后我们就可以去修改xposed插件了,改起来也很简单,就是将android.util.Log里面的几个方法替换成我们的方法。然后他原始的日志就会通过我们定义的方法打印出来,代码很简单然后我们上传到爱加密进行加固,加固之后下载下来进行签名。demo apk可以从附件中下载
MethodReplaceImpl.java
package com.smartdone.printlog;import de.robv.android.xposed.XC_MethodHook;import de.robv.android.xposed.XC_MethodReplacement;/** * Created by smartdone on 2017/4/17. */public class MethodReplaceImpl extends XC_MethodReplacement { @Override protected Object replaceHookedMethod(MethodHookParam methodHookParam) throws Throwable { String methodname = methodHookParam.method.getName(); if (methodname.equals("v")) { return Log.v((String) methodHookParam.args[0], (String) methodHookParam.args[1]); } else if (methodname.equals("i")) { return Log.i((String) methodHookParam.args[0], (String) methodHookParam.args[1]); } else if (methodname.equals("d")) { return Log.d((String) methodHookParam.args[0], (String) methodHookParam.args[1]); } else if (methodname.equals("w")) { return Log.w((String) methodHookParam.args[0], (String) methodHookParam.args[1]); } else if (methodname.equals("e")) { return Log.e((String) methodHookParam.args[0], (String) methodHookParam.args[1]); } return null; }}
Main.java
package com.smartdone.printlog;import android.app.Application;import android.content.Context;import android.util.*;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.lang.reflect.Method;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XC_MethodHook;import de.robv.android.xposed.XposedBridge;import de.robv.android.xposed.XposedHelpers;import de.robv.android.xposed.callbacks.XC_LoadPackage;/** * Created by smartdone on 2017/4/5. */public class Main implements IXposedHookLoadPackage { @Override public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable { if (loadPackageParam.packageName.equals("com.smartdone.logtests")) { XposedHelpers.findAndHookMethod("com.shell.SuperApplication", loadPackageParam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { Context context = (Context) param.args[0]; Context plicontext = context.createPackageContext("com.smartdone.printlog", Context.CONTEXT_IGNORE_SECURITY); InputStream in = plicontext.getAssets().open("libslog.so"); File so = new File(context.getFilesDir(), "libslog.so"); if (!so.getParentFile().exists()) { so.getParentFile().mkdirs(); } FileOutputStream fout = new FileOutputStream(so); byte[] buffer = new byte[1024]; int len = in.read(buffer); while (len > 0) { fout.write(buffer); len = in.read(buffer); } fout.flush(); fout.close(); in.close(); android.util.Log.e("LOGTEST", "write so to /data/data/... success"); System.load(so.getAbsolutePath()); Class<?> log = XposedHelpers.findClass("android.util.Log", context.getClassLoader()); MethodReplaceImpl methodReplace = new MethodReplaceImpl(); XposedHelpers.findAndHookMethod(log, "i", String.class, String.class, methodReplace); XposedHelpers.findAndHookMethod(log, "v", String.class, String.class, methodReplace); XposedHelpers.findAndHookMethod(log, "e", String.class, String.class, methodReplace); XposedHelpers.findAndHookMethod(log, "w", String.class, String.class, methodReplace); XposedHelpers.findAndHookMethod(log, "d", String.class, String.class, methodReplace); } }); } }}
当然,源代码还是在上次的那个github地址 https://github.com/smartdone/printlog
使用这个之后,应用自身打印的log又可以显示出来了,效果如下
上传的附件:
- app-debug_unsign_sign.apk (2.11MB,1次下载)
0 0
- 爱加密加固之后恢复原始的log
- 解决爱加密加固之后使用xposed hook的时候log打印不出来的问题
- 爱加密和梆梆的加固的破解方法
- 爱加密和梆梆加固的破解方法
- 爱加密,梆梆,360加固初比较
- 【原创】简单尝试脱“爱加密”官网加固的DEX壳
- 安卓移动App保护、爱加密App安全加固!
- 移动App病毒恶意增长、爱加密App加固防护。
- 【爱加密】Android App应用安全加固详细步骤
- 爱的加密
- 爱的加密
- oracle redo log日志(当前或非当前日志)损坏之后的db恢复
- Oracle online redo log日志 (当前或非当前日志) 损坏之后的DB恢复
- 如何防止Android apk 恶意篡改,爱加密APK安全加固
- 爱加密安卓应用加固、谨防“越位木马”借世界杯捆绑手机App
- 安卓App有风险,爱加密加固保护App安全!
- 安卓App有风险,爱加密加固保护App安全!
- 移动支付助推互联网金融发展、 爱加密进行安卓应用加固!
- WAV文件分析
- Mac DBeaver Client home is not specified for connection解决办法
- 华为和魅族手机不输出Log打印
- 量化python网站整理
- camera驱动概述
- 爱加密加固之后恢复原始的log
- hpp文件与h文件
- android平台短视频技术之视频编辑的经验分享
- 调试耗时——旋转矩阵
- 部署Jenkins
- 【Maven】持续交付环境中,组件工程依赖管理的配置与检查
- PAT-A-1048. Find Coins (25)
- 全栈之路初印象
- JavaScript实现瀑布流布局