Android应用保护
来源:互联网 发布:淘宝店推广方式 编辑:程序博客网 时间:2024/06/04 17:49
if ((getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0){ Log.e("com.droider.antidebug", "程序被修改为可调试状态"); android.os.Process.killProcess(android.os.Process.myPid()); } if (android.os.Debug.isDebuggerConnected()) { //检测调试器 Log.e("com.droider.antidebug", "检测到测试器"); android.os.Process.killProcess(android.os.Process.myPid()); }
boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec("getprop ro.kernel.qemu"); os = new DataOutputStream(process.getOutputStream()); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); os.writeBytes("exit\n"); os.flush(); process.waitFor(); qemuKernel = (Integer.valueOf(in.readLine()) == 1); Log.d("com.droider.checkqemu", "检测到模拟器:" + qemuKernel); } catch (Exception e){ qemuKernel = false; Log.d("com.droider.checkqemu", "run failed" + e.getMessage()); } finally { try{ if (os != null) { os.close(); } process.destroy(); } catch (Exception e) { } Log.d("com.droider.checkqemu", "run finally"); } return qemuKernel; } public static String getProp(Context context, String property) { try { ClassLoader cl = context.getClassLoader(); Class SystemProperties = cl.loadClass("android.os.SystemProperties"); Method method = SystemProperties.getMethod("get", String.class); Object[] params = new Object[1]; params[0] = new String(property); return (String)method.invoke(SystemProperties, params); } catch (Exception e) { return null; } }
public int getSignature(String packageName) { PackageManager pm = this.getPackageManager(); PackageInfo pi = null; int sig = 0; try { pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); Signature[] s = pi.signatures; sig = s[0].hashCode(); } catch (Exception e1) { sig = 0; e1.printStackTrace(); } return sig; }
private boolean checkCRC() { boolean beModified = false; long crc = Long.parseLong(getString(R.string.crc)); ZipFile zf; try { zf = new ZipFile(getApplicationContext().getPackageCodePath()); ZipEntry ze = zf.getEntry("classes.dex"); Log.d("com.droider.checkcrc", String.valueOf(ze.getCrc())); if (ze.getCrc() == crc) { beModified = true; } } catch (IOException e) { e.printStackTrace(); beModified = false; } return beModified; }
转自:
http://blog.csdn.net/allenwells/article/details/47019605
http://blog.csdn.net/allenwells/article/details/47019615
0 0
- Android应用保护
- Android应用中如何保护JAVA代码
- Android应用中如何保护JAVA代码
- 【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇
- 【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇
- Android应用安全与防范之数据保护和资源保护
- Android应用资源文件格式解析与保护对抗研究
- 浅谈Android应用保护(零):出发点和背景
- 浅谈Android应用保护(一):Android应用逆向的基本方法
- 登录以保护应用
- 保护器件应用
- 保护web应用
- 如何保护HTML5应用代码
- 使用shrio保护spring 应用
- 保护模式下的应用
- 保护模式下的应用
- 第九章 保护Web应用
- 保护你的隐私,五种控制Android应用的权限的方法
- composer注意的几个问题
- toggleClass的用法简介
- How to run 32-bit app in Ubuntu 14.04 64-bit?
- 解决表格中边框双线的问题
- 如何设置程序与文件关联并且双击关联文件时获取文件的路径呢?(转)
- Android应用保护
- opencv-ios开发笔记3 直方图匹配
- BZOJ 2330 差分约束 + spfa
- 斗地主AI算法实现 一(拆牌)
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start com
- 安卓逆向分析之路——第一天 20160523
- 第12周阅读程序(2)
- Hadoop平台下的Hive和HBase
- leetcode 202 Happy Number C++