如何保护我的android应用程序免受数据包捕获



我想让我的Android应用程序安全。在某些应用程序中,如果手机安装了网络嗅探器程序(数据包捕获、ssl捕获等(,应用程序会发出警报(删除数据包捕获(并关闭。如何添加类似的安全措施?我应该寻找什么技术?

我用这个解决了这个问题:

在utils文件夹中创建一个HelperUtils.java类,并添加以下代码:

public class HelperUtils {
private Activity activity;
public HelperUtils(Activity activity) {
this.activity = activity;
}
public boolean isVpnConnectionAvailable(){
String iface = "";
try {
for (NetworkInterface networkInst : Collections.list(NetworkInterface.getNetworkInterfaces())){
if (networkInst.isUp())
iface = networkInst.getName();
if ( iface.contains("tun") || iface.contains("ppp") || iface.contains("pptp")) {
return true;
}
}

}catch (SocketException e){
e.printStackTrace();
}
return false;
}
public ApplicationInfo getRestrictApp() {
ApplicationInfo restrictPackageInfo = null;
final PackageManager pm = activity.getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
if (packageInfo.packageName.equals("com.guoshi.httpcanary") ||
packageInfo.packageName.equals("app.greyshirts.sslcapture") ||
packageInfo.packageName.equals("com.guoshi.httpcanary.premium") ||
packageInfo.packageName.equals("com.minhui.networkcapture.pro") ||
packageInfo.packageName.equals("com.minhui.networkcapture") ||
packageInfo.packageName.equals("com.egorovandreyrm.pcapremote") ||
packageInfo.packageName.equals("com.packagesniffer.frtparlak") ||
packageInfo.packageName.equals("jp.co.taosoftware.android.packetcapture") ||
packageInfo.packageName.equals("com.emanuelef.remote_capture") ||
packageInfo.packageName.equals("com.minhui.wifianalyzer") ||
packageInfo.packageName.equals("com.evbadroid.proxymon") ||
packageInfo.packageName.equals("com.evbadroid.wicapdemo") ||
packageInfo.packageName.equals("com.evbadroid.wicap") ||
packageInfo.packageName.equals("com.luckypatchers.luckypatcherinstaller") ||
packageInfo.packageName.equals("ru.UbLBBRLf.jSziIaUjL")) {
//restrictPackageName = packageInfo.packageName;
//restrictPackageName = packageInfo.loadLabel(activity.getPackageManager()).toString();
restrictPackageInfo = packageInfo;
}
}
return restrictPackageInfo;
}
public boolean isForeground( String myPackage){
ActivityManager manager = (ActivityManager) activity.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
Log.e("123456", "Background Apps: " + componentInfo.getPackageName());
return componentInfo != null && componentInfo.getPackageName().equals(myPackage);
}
public boolean isAppRunning(Context context, String packageName){
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos = activityManager.getRunningAppProcesses();
if (processInfos != null){
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos){
if (processInfo.processName.equals(packageName)){
return true;
}
}
}
return false;
}
public void showWarningDialog(Activity context, String title, String message) {
new AlertDialog.Builder(context)
.setTitle(title)
.setMessage(message)
.setIcon(R.drawable.ic_warning)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
context.finish();
}
})
.setCancelable(false)
.show();
}

}

在此之后,转到您的主要活动。Java类并添加以下代码:

private boolean vpnStatus;

//check vpn connection
helperUtils = new HelperUtils(MainActivity.this);
vpnStatus = helperUtils.isVpnConnectionAvailable();
if (vpnStatus) {
helperUtils.showWarningDialog(MainActivity.this, getString(R.string.vpn_detected), getString(R.string.close_vpn));
return;
}

在sting.xml文件中添加以下代码:

<string name="vpn_detected">VPN Detected!!</string> 
<string name="close_vpn">Close VPN and re-open the app to continue.</string>

就是这样,现在你的应用程序将显示";检测到Vpn";每当有人试图使用vpn或ssl捕获应用程序访问它时。祝你好运

相关内容

最新更新