金山手机毒霸工作原理Word文档格式.docx

上传人:b****8 文档编号:22483553 上传时间:2023-02-04 格式:DOCX 页数:12 大小:378.86KB
下载 相关 举报
金山手机毒霸工作原理Word文档格式.docx_第1页
第1页 / 共12页
金山手机毒霸工作原理Word文档格式.docx_第2页
第2页 / 共12页
金山手机毒霸工作原理Word文档格式.docx_第3页
第3页 / 共12页
金山手机毒霸工作原理Word文档格式.docx_第4页
第4页 / 共12页
金山手机毒霸工作原理Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

金山手机毒霸工作原理Word文档格式.docx

《金山手机毒霸工作原理Word文档格式.docx》由会员分享,可在线阅读,更多相关《金山手机毒霸工作原理Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

金山手机毒霸工作原理Word文档格式.docx

label="

@string/app_name_desktop"

icon="

@drawable/main_icon_big"

name="

com.ijinshan.duba.main.MobileDubaApplication"

allowClearUserData="

false"

debuggable="

>

2. 

<

activity 

@string/app_name"

com.ijinshan.duba.main.MainActivity"

launchMode="

singleTask"

screenOrientation="

portrait"

/>

3. 

com.ijinshan.duba.main.SplashActivity"

clearTaskOnLaunch="

true"

singleTop"

4. 

intent-filter>

5. 

action 

android.intent.action.MAIN"

6. 

category 

android.intent.category.LAUNCHER"

7. 

/intent-filter>

8. 

/activity>

9. 

com.ijinshan.duba.main.AuthorityActivity"

10. 

com.ijinshan.duba.AdUI.AdwareNotifyListActivity"

11. 

com.ijinshan.duba.AdUI.AdPrivacyActivty"

12. 

com.ijinshan.duba.AdUI.AdScanActivty"

13. 

com.ijinshan.duba.AdUI.AdwareLogActivty"

14. 

com.ijinshan.duba.AdUI.AdDetailActivty"

15. 

mon.NotifyEntryActivity"

16. 

com.ijinshan.duba.malware.MalwareActivity"

17. 

com.ijinshan.duba.malware.ScanResultListActivity"

18. 

com.ijinshan.duba.malware.VirusDetailActivity"

19. 

com.ijinshan.duba.defend.defendActivityTest"

20. 

com.ijinshan.duba.privacy.PrivacyActivity"

21. 

com.ijinshan.duba.privacy.PrivacyDetailActivity"

22. 

com.ijinshan.duba.privacy.PrivacySortActivity"

23. 

@style/DialogActivityStyle"

com.ijinshan.duba.malware.PcConnectActivity"

singleInstance"

24. 

25. 

"

26. 

27. 

28. 

com.ijinshan.duba.watcher.FileInstNoticeActivity"

29. 

com.ijinshan.duba.watcher.AppLaunchMonitorActivity"

30. 

com.ijinshan.duba.malware.BadNetActivity"

31. 

com.ijinshan.duba.main.ShowProtocolActivity"

32. 

com.ijinshan.duba.defend.Activity.IngnoreAppActivity"

33. 

com.ijinshan.duba.main.ShowRestartTipDialog"

34. 

service 

com.ijinshan.duba.service.PcConnectService"

35. 

36. 

37. 

38. 

/service>

39. 

com.ijinshan.duba.defend.DefendService"

exported="

process="

:

DefendService"

40. 

receiver 

com.ijinshan.duba.receiver.AutoRunReceiver"

permission="

android.permission.RECEIVE_BOOT_COMPLETED"

41. 

42. 

android.intent.action.BOOT_COMPLETED"

43. 

android.intent.category.DEFAULT"

44. 

45. 

/receiver>

46. 

com.ijinshan.duba.receiver.ShutdownReceiver"

47. 

48. 

android.intent.action.ACTION_SHUTDOWN"

49. 

50. 

51. 

provider 

com.ijinshan.duba.main.DubaConfigProvidor"

authorities="

com.ijinshan.duba.config"

52. 

com.ijinshan.duba.Provider.AdRuleProvidor"

com.ijinshan.duba.adrule"

53. 

com.ijinshan.duba.Provider.MalwareDBProvidor"

com.ijinshan.duba.malwaredb"

54.<

/application>

2、手机毒霸运行时涉及进程及进程组件分布

通过对手机毒霸代码逆向分析及运行时进程状态变化,金山手机毒霸代码共在四类进程中被加载运行。

(1)com.ijinshan.duba进程

广告扫描引擎、病毒扫描引擎、金山版本控制等逻辑都在该进程中运行,

另外手机毒霸还在15997端口建立监听,PC端可以通过该TCP连接发送命令手机端毒霸扫描。

(2)com.ijinshan.duba:

DefendService进程

广告规则和扫描病毒信息由该进程通过Provider提供。

(2)com.ijinshan.duba.rootkeeper进程

该进程以ROOT身份运行,该进程提供了手机毒霸其它进程运行需要root身份才能执行的命令的Binder接口,第三方程序进程的代码注入由该进程完成。

(4)第三方(injectedprocess)被注入程序进程

通过ptrace()注入到第三方程序的代码,ksremote.jar和libksrootclient.so完成java虚拟机hook和底层Sockethook。

三、JAVA虚拟机hook实现原理

目前Android进程代码的注入都是靠ptrace函数来完成。

ptrace进程后完成底层函数的重定向。

金山毒霸代码注入包括两部分:

1、底层C函数HOOK

2、JAVA虚拟机HOOK

代码注入基本流程如下:

1、com.ijinshan.duba.rootkeeper进程ptrace第三方进程,并注入libksrootclient.so文件

2、libksrootclient.so代码完成底层C函数hook并调用ksremote.jar代码,ksremote.jar完成java虚拟机hook

(1)C代码如何完成对java代码的调用呢?

基本代码实现如下:

[cpp] 

1.int 

(*callStatic)(const 

char* 

className, 

const 

methodName);

JavaVM* 

(*getJavaVM)();

JNIEnv* 

(*getJNIEnv)();

5.void* 

handle 

dlopen("

/system/lib/libandroid_runtime.so"

 

RTLD_NOW);

7.getJNIEnv 

dlsym(handle, 

_ZN7android14AndroidRuntime9getJNIEnvEv"

);

env 

getJNIEnv();

jclass 

classloaderClass 

(*env)->

FindClass(env,"

java/lang/ClassLoader"

jmethodID 

getsysloaderMethod 

GetStaticMethodID(env,classloaderClass<

span 

style="

font-family:

Arial, 

Helvetica, 

sans-serif;

/span>

getSystemClassLoader"

()Ljava/lang/ClassLoader;

jobject 

loader 

CallStaticObjectMethod(env, 

classloaderClass, 

getsysloaderMethod);

jstring 

dexpath 

NewStringUTF(env, 

dex文件路径"

dex_odex_path 

NewStringUTF(env,"

odex文件路径"

dexLoaderClass 

dalvik/system/DexClassLoader"

initDexLoaderMethod 

GetMethodID(env, 

dexLoaderClass, 

init>

(Ljava/lang/String;

Ljava/lang/String;

Ljava/lang/ClassLoader;

)V"

dexLoader 

NewObject(env, 

initDexLoaderMethod,dexpath,dex_odex_path,NULL,loader);

findclassMethod 

GetMethodID(env,dexLoaderClass,"

findClass"

"

)Ljava/lang/Class;

javaClassName 

加载类名"

javaClientClass 

CallObjectMethod(env,dexLoader,findclassMethod,javaClassName);

start_inject_method 

GetStaticMethodID(env, 

adInjectClient_class, 

调用方法名"

()V"

CallStaticVoidMethod(env,javaClientClass,start_inject_method);

(2)java虚拟机hook如何实现呢?

java虚拟机hook都是通过java反射修改系统关键类的关键字段来实现的,我们通过替换LocationManager来看看如何实现的:

当用户代码运行ServiceManager.getService("

location"

)的时候,得到就是手机毒霸的LocationManager了。

三、广告拦截原理

广告拦截逻辑大致包含以下几个方面:

1、Banner类型广告

当Activity显示的时候,手机毒霸遍历ActivityView树,判断View类包名是否为广告平台包名,如果是则添加手机毒霸广告关闭图标,当用户点击关闭图标时,隐藏Banner 

广告View。

2、WebView类型广告

判断WebViewClient类名判断是否为广告。

3、Notification类型广告

主要是通过RemoteViews的action来判断是否为广告。

另外手机毒霸通过hookSocket接口来完成广告的拦截,通过网络层的拦截来完成广告的拦截。

大升刷票整理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1