美文网首页
IDA使用分析

IDA使用分析

作者: XX开发从开始到放弃 | 来源:发表于2017-08-25 18:06 被阅读0次

    本测验IDA的使用

    使用环境:IDA version 6.6.141224

    open文件的时候 可能会出现

    强行打开后 发现

    这种情况 查看函数本身内容可以看到,但函数本身的命名已经无法阅读了

    这种情况只有经过砸壳才能处理

    open还会出现

    这个时候表面IDA无法识别这样的二进制文件。

    出现这种情况的原因 可能是因为之前的选择文件处 未能正确选择

    如MD5是:2D987244AE37F66B4C54592853B5D2D6。这个文件无法识别 打开如下

    发现里面都是资源文件 这个时候需要对其解压,找到其中的plist文件,plist文件里对有效的app文件有说明

    如图

    简单能判断MultiCall为它的执行文件,将这个文件拖入IDA,即能识别

    有些只需要简单识别,和文件名保持一致的即可识别打开

    如MD5为02EA5313EBFFACDA1700E4FE44BE97D7

    下面开始正式分析一个样本  样本列表如下图

    解压完层层tar文件

    解压过程为:

    1:将文件改为.deb后缀

    2:终端 tar xvf .deb

    这个时候有无插件的解压结果是分情况的,下面是无插件的解压结果

    并无外挂插件,在外挂层面上这个样本没有恶意行为。

    接下来主要分析私有API的使用。

    plist文件如下

    因目前暂无iphone,无法动态运行该样本,放入IDA中如下

    app的入口函数为 TwangAppDelegate applicationDidFinishLaunching,其他几个都是里面的函数 c伪码为

    这个函数里简单分析如下

    1:获取本例的audiosession会话,调用AVAudioSessionCategoryPlayback:这个类别会静止其他应用的音频回放。可以使用AVAudioPlayer的prepareToPlay和play方法,在应用中播放声音。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放都会继续。

    2:获取sharedApplication本例application句柄,将状态栏方向设置为3(暂不管3为什么方向) setStatusBarOrientation

    3:初始化TwangViewController并将其添加在主windows上,并使主window可见。

    好,接下来分析TwangViewController里面的东西

    这个类里面粗略一看

    -[TwangViewController shouldAutorotateToInterfaceOrientation:]:这个函数意思很简单 该界面是否自动化支持界面旋转

    -[TwangViewController viewDidUnload]:这个函数也很简单,是指界面在消失,即类的实例在析构的时候,界面的指针要设置成nil避免成为野指针

    -[TwangViewController dealloc]:这个函数同上

    -[TwangViewController didReceiveMemoryWarning] :这个函数是指app使用内存超标的时候发出的警告

    -[TwangViewController pickerView:widthForComponent:]

    -[TwangViewController pickerView:rowHeightForComponent:]

    -[TwangViewController pickerView:numberOfRowsInComponent:]

    -[TwangViewController pickerView:didSelectRow:inComponent:]

    -[TwangViewController pickerView:viewForRow:forComponent:reusingView:]

    -[TwangViewController pickerFrameWithLandscapeSize:]

    -[TwangViewController numberOfComponentsInPickerView:]  这几个函数是控件pickerView的datasource和delegate,简单的说就是提供pickerview的component间距有多宽,每一行高度是多少,有多少个component,每个component有多少个rows,点击了会怎样等等。

    重点来看一下-[TwangViewController viewDidLoad] 这个函数 如下

    分析如下:

    1:初始化一个glView,并将其添加到view上(当然并不清楚glView是什么东西),对这个glView添加一个观察者对象,它的响应函数是flippedEvent,触发条件是 Flipped

    2:又添加一个观察者对象,这次的观察动作是 UIApplicationWillResignActiveNotification,响应函数是regignactive。简单点说,就是程序从后台切换到前台被激活的时候,触发这个函数。

    3:又添加一个观察者对象 这次的动作是UIApplicationDidBeacomeActiveNotification,响应函数是becameActive。

    4:触发glView的startAnimation动作

    分别来看这几个函数是干嘛的

    flippedEvent:

    点击这个事件,则方向转为1方向,并设置这一动画的时间和角度,获取glView,触发playSwivelSound函数

    resignactive:

    glView调用停止播放,停止动画的函数

    becameActive:

    glView调用开始播放,开始动画的函数

    如果就这样按照顺序去分析 分析恶意代码的耗时时间太长了

    在无插件的情况下 分析恶意代码从四个内容入手

    1:funtion。IDA提供代码中使用funtion列表,从function列表从浏览可能的恶意API的使用,如果有,进入实现处进行分析。

    2:imports。IDA提供导入头文件,导入的framework,浏览这个列表也能发现可疑行为。

    3:strings。从代码文件中抽离strings进行浏览,发现可疑行为。

    4:names。从代码文件中抽离names进行浏览,发现可疑行为。

    本样本未能发现恶意代码···

    但是在样本MD5 = 2B98489938AAFA0D4DEB281239B913F6中 import里发现了AddressBook的框架调用

    这个时候需要定位到此处去查看addressBook是否有未经用户允许擅自查询通讯录的行为

    定位代码处为

    有三处

    +[ABAddressHelper getPersonNote:] 为

    分析如下:

    +[ABAddressHelper getPersonURL:] 代码为

    +[ABAddressHelper getServerURL] 处代码为

    其中ABAddressBookCopyPeopleWithName这个函数并未在ABAddressBook的数据源里实现,而仅仅在取得用户同意的基础之上才能在数据源里实现这个函数,

    在别处使用这个函数都将是不合法的。

    所以此处使用了私有API,属于恶意代码。

    相关文章

      网友评论

          本文标题:IDA使用分析

          本文链接:https://www.haomeiwen.com/subject/ivcpdxtx.html