搭建android竞品系统crossscan的一点思路
来源:互联网 发布:windows outlook下载 编辑:程序博客网 时间:2024/06/05 17:22
1:通过逆向分析提取antiy 的 scanner的SDK
2:创建android工程,由于是命令行,所以无需带activity;
package com.antiy.sdk;import android.content.res.AssetManager;public class AVLA{ public AVLA() { } public native String GetEngVersion(); public native String GetLibVersion(); public native int Init(String s); public native int Release(); public native String[] Scan(String s); public native int SetMode(int i); public native int UnzipFromAssets(AssetManager assetmanager, String s); public native int Update(String s, String s1); static { //System.loadLibrary("avla"); System.load("/data/data/org.crazyit.toast/lib/libavla.so"); }}
使用antiy的SDK:
antiycmd.java
package org.crazyit.toast;import java.io.File;import java.util.ArrayList;import java.util.List;import com.antiy.sdk.AVLA;public class antiycmd {static List<String> fl = new ArrayList<String>();//取出文件private static List<String> getMyFile(AVLA avla,String pathString){ //局部变量 记录文件路径List<String> it=new ArrayList<String>(); //指定文件目录File f=new File(pathString); //递归getFileList(avla,f); //递归完毕,提出全局量fl里面的内容for(int i = 0; i < fl.size(); i++) { it.add(fl.get(i)); } return it; }//递归函数public static void getFileList(AVLA avla,File file) {//列出指定路径下所有文件System.out.println("1\n"); File[] files = file.listFiles(); System.out.println("2\n");//遍历当前各个文件 for(int i = 0; i < files.length; i++) { System.out.println("3\n"); File f = files[i]; System.out.println("4\n"); if(f.isFile()) { System.out.println(f.getPath()); String[] strarry=avla.Scan(f.getPath()); if(strarry!=null) { System.out.println(f.getPath()+"->"+strarry[0].toString()); }else { System.out.println(f.getPath()+"->clean"); } }else if(f.isDirectory()) {//不是文件,而是文件夹,进一步检查这个文件夹下面文件 getFileList(avla,f); } } } public static void main(String[] argc){ AVLA avla = new AVLA(); File file = new File("/data/data/org.crazyit.toast/files/avl/"); if(file.exists()) { avla.Init("/data/data/org.crazyit.toast/files/avl/"); avla.SetMode(127); //getMyFile(avla,"/data/data/org.crazyit.toast/files/avl/"); if(argc.length==1) { System.out.println(argc[0].toString()); getMyFile(avla,argc[0].toString()); }else { System.out.println("pls input the path of samples..\n");} }else{ System.out.println("seems the malware db not yet inited..\n"); } avla.Release(); }}
ToastTest.java
package org.crazyit.toast;import com.antiy.sdk.*;import java.io.File;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;/** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class ToastTest extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Button simple = (Button)findViewById(R.id.simple);//为按钮的单击事件绑定事件监听器simple.setOnClickListener(new OnClickListener(){//@Overridepublic void onClick(View source){//创建一个Toast提示信息File file = new File((new StringBuilder(String.valueOf(getFilesDir().getAbsolutePath()))).append("/avl/conf/liscense.conf").toString());if(!file.exists()){android.content.res.AssetManager assetmanager = getAssets();String s = getFilesDir().getAbsolutePath();File file1 = new File(s);if(!file1.exists()) file1.mkdir();(new AVLA()).UnzipFromAssets(assetmanager, (new StringBuilder(String.valueOf(s))).append("/").toString());}AVLA avla = new AVLA(); avla.Init((new StringBuilder(String.valueOf(getFilesDir().getAbsolutePath()))).append("/avl").toString()); //int i= avla.Update(null, null); String s1 = avla.GetEngVersion(); String s2 = avla.GetLibVersion(); avla.Release();Toast toast = Toast.makeText(ToastTest.this, "Antiy SDK installed:"+"\nEngVer"+s1+"\nLibVer:"+s2// 设置该Toast提示信息的持续时间, Toast.LENGTH_SHORT);toast.show();}});}}
3:build之后,通过dalvikvm执行 apk
比如):
adb shell dalvikvm -cp /data/app/org.crazyit.toast-1.apk org.crazyit.toast.antiycmd /mnt/sdcard/antiy/
这里的org.crazyit.toast-1.apk,这里的名字后缀不是-1就是-2,目前我还没发现有-3的。第一次安装是-1,第二次是-2,再次又回到-1。
备注:该程序后续的一些思考,这个程序可以用来做竞品的crossscan系统,思路是这样的,可以插入一个包含main函数的包,然后通过命令行来调用apk中的这个包的main函数就如上面的例子一样,剩下的你只需要找到扫描引擎中的目录扫描函数(什么没有?那扫描文件的函数总有吧)这样可以实现命令行下调用,命令行下获取结果,如果你写过类似的程序,应该很容易想到使用一些脚本程序来控制模拟器来实现了。应该很多安全厂商都有类似的竞品系统吧,呵呵。不知道这么说是否明白了。
- 搭建android竞品系统crossscan的一点思路
- [SheRO]Lua框架搭建的一点思路
- 产品的一点思路
- 关于定制 android 恢复出厂设置的一点思路
- 权限管理的一点思路
- 权限管理的一点思路
- SysLog 学习的一点思路
- SysLog 学习的一点思路
- 多线程调试的一点思路
- 学习技术的一点思路
- SysLog 学习的一点思路
- 一点java的学习思路
- 搭建eclipse android开发环境的一点记录
- 从后台到webshell的一点思路
- [备忘]理清Event Handling的一点思路
- MM运营的一点思路汇总
- (转)SysLog 学习的一点思路
- 关于手机网上点菜的一点思路
- Socket & InetAddress的使用
- C++中四种cast类型强制转换方式
- 给定一个链表,比如L1--->L2---->L3---->................----->Ln,把链表调整为L1---->Ln----->L2----->Ln-1------>L3----
- …”“明天晚宴过后,你把这两封信交给玄清莫,
- hello node
- 搭建android竞品系统crossscan的一点思路
- 【Github教程】史上最全github使用方法:github入门到精通(转)
- C/C++刁钻问题各个击破之细说sizeof
- 堆排序的应用之优先级队列的实现
- hibernate映射组成关系
- 小乔……你身体没事了吧?”最先开
- extern与static的链接属性分析
- 物理层、数据链路层
- Oracle DB_约束