Android恶意样天职析——frida破解三层锁机样本
代码
1760 人阅读
|
0 人回复
|
<
Android 歹意样本分析——三层锁机样本破解
1、样本介绍
近来正在吾爱上看到一个三层锁机的样本,刚好近来正在进修研讨Frida,经由过程消息态阐发去完全了解一下那个锁机样本。
2、尝试情况
夜神模仿器+Kali
jadx-gui
Visual Studio Code
Android Studio
3、尝试步伐
(1)静态阐发
我们先经由过程jadx-gui翻开歹意样本法式,开端静态阐发:
我们正在AndroidManifest.xml文件中能够找到样本的进口面,能够发明样本中存正在三个service,那个是样本后绝完成三层锁机的效劳,我们进进MainActivity
代码注释:
(1)我们能够看收支心处利用ADRTLogCatReader记载硬件运转时期所发生的日记,那是年夜部分锁机样本城市用到的。
(2)利用是startService启动效劳,然后经由过程Class.forName隐式的跳转Activity,然后传进举动,并启动intent跳转
然后我们定位到跳转的类com.k7.qq2856437148.K7
代码注释:
(1)起首我们利用WindowManager建造一个悬浮窗,然后把该窗心权限设置最下,如许就能够安排正在顶层,用户除面击串心界里,不克不及返回,开端抵达了锁机的目标
(2)我们持续阐发,发明两处的代码被混合,那里多是一些字符串疑息,能够包罗我们的稀钥
(3)到了面击函数中,我们能够发明1处第一个判定语句,前里值滥觞于我们的文本框输进,前面是k7中寄存的字符串,婚配成功后,那里也是我们的hook面
(4)2处跳转到K71,3处将当前的窗心移除,4处截至历程,那便完成了锁机窗心的切换
我们进进K71类中持续阐发
我们能够发明根本道理战我们k7中一样,只是那里对稀钥举办了减稀处置,我们再查察k72,我们只需求对那里hook便可,便是我们的hook面2
k72的完成道理战k71一样,也是接纳减稀算法对稀钥做了处置,我们只需求对那里hook,便是我们的hook面3
(2)静态阐发
objection静态阐发
起首,我们先需求设置frida情况,具体教程参考网上,我们启动frida_server
然后我们先利用objection东西对法式举办开端的hook消息态阐发,objection的利用那里参考肉丝年夜佬宁静客上的文章:https://www.anquanke.com/post/id/197657#h3-6
- 常睹的hook号令:
- objection -g com.android.settings explore //注进设置使用
- android hooking list activities //检察Activity,service不异
- android intent launch_activity com.android.settings.DisplaySettings //完成Activity跳转
- android heap search instances com.android.settings.DisplaySettings //搜刮类的真例
- android heap execute 0x2526 getPreferenceScreenResId //自动挪用真例
- android hooking list classes //列出内乱存中一切类
- android hooking search methods display //列出内乱存中一切的办法
- android hooking watch class android.bluetooth.BluetoothDevice //hook相干类的一切办法
- android hooking watch class_method android.bluetooth.BluetoothDevice.getName --dump-args --dump-return --dump-backtrace //挨印详细办法的参数、返回值、仓库疑息
- 平常利用的便是那些,详细能够参考肉丝年夜佬的专客
复造代码 我们利用objection,对样本举办开端的阐发:
战我们之前静态阐发的一样,样本有1个Activity战3个service,我们先看能不克不及间接完成跳转
我们发明不克不及间接跳转,那我们测验考试查察一些函数疑息,并开端对一些函数举办hook
我们hook类K7中的函数c失利,那是由于正在我们启动时,真例曾经减载以是出有hook上,我们正在启动时便hook看看
次要是c函数的返回值等皆为空,以是我们并出有获得实践有效疑息,我们利用objection hook阐发也开端完毕了
Frida代码hook
经过我们前里的消息态阐发,我们先对第一个hook面,编写代码hook:
- Java.choose("com.k7.qq2856437148.K7",{
- onMatch:function(instance){
- console.log("Found instance:",instance);
- console.log("k7:",instance.k7.value);
- },onComplete:function() {
- console.log("search completed!")
- }
- })
复造代码 我们那里只需求hook出k7的值便可
我们输进字段值,然落后进第两层锁机
然后我们对第两个hook面开端hook
那里我们能够发明,第两层稀钥便是将K7举办减稀,我们hook减稀函数便可,固然我们也能够编写代码把K7值hook出去获得稀钥
- Java.use("com.k7.qq2856437148.jiami").GetMD5Code.implementation = function(x) {
- var result = this.GetMD5Code(x);
- console.log("x,result",x,result);
- return result;
- }
复造代码 我们随意输进暗码,然后hook
输进稀钥,我们进进最初一层
我们间接持续对减稀函数hook便可
然后我们把稀钥输进出来,能够发明最初一层锁机消除
4、尝试总结
那里我操纵frida手艺对三层锁机举办了消息态阐发,对锁机的样来源根基理举办了一个开端阐发。我们发明三层锁机的稀钥,第一层是牢固稀钥,那个能够经由过程静态调试获得,第两层则是按照您输进暗码或发生的稀钥,便只能经由过程编写减稀法式,大概找到对应的hook面举办获得,第三层稀钥战第两层稀钥道理一样,只是减稀方法比较庞大一面,那里间接hook出稀钥结果最好。
最初那里很多处所参考了肉丝年夜佬的专客战星球,对frida的了解进一步深化了,此次样本分析便到那里,另有甚么成绩请列位年夜佬指教。
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|
|
|
|
|