昨天在在debugman论坛上看到了agou的大作<<板砖一块,定位感兴趣代码的辅助工具,atracer,超beta版>>,觉得很有新意,急急忙忙下载下来,准备开始一躺神奇的旅程……我使用notepad,calc,mspaint一一尝试,全部崩溃,恩。。这个神奇的旅程最终以失败而告终。agou说太忙,不做了,于是我打算继承agou的衣钵,照着他的想法做下去,于是就有了这玩意儿。
我简单的说下用法,agou的tool不管代码、区段全是自己包办,我觉得还是没插在OD上爽,于是就写成了plugin。
把dll放到plugin目录下后先加载目标程序,这里我用notepad来做example,定位一下[关于]菜单所执行的相关代码。程序加载后,使用CTRL+Y或者选择插件菜单都可打开上面这个窗口。
然后使用IDA打开notepad,待分析结束后,创建一个map文件保存在notepad所在的目录下保存为notepad.map,在弹出的Generate MAP file窗口中,只选择dummy names这一项
为什么这里要使用IDA的功能呢?其实我也不想,只因为OD的分析能力实在太弱,连函数都不能完全分析出来。
把map文件放在notepad同目录下后,按下YeahTrack主窗口上的[开始跟踪]按钮,注意在按下只前,右边有2个checkbox可以选择,一个是sub_,一个是loc_,sub代表在所有函数头的地址下断,loc_代表在所有的标签上下断,最好2个都选上。
按下跟踪按钮后,F9运行程序,执行一些不相干的操作,会发现很多断点被取消,并且显示中断次数在增加,发现次数不再增加后,按下记录按钮,这时断下来的地址将会被记录在LISTBOX中。好,关键的地方到了,选择菜单 ->帮助|关于记事本,弹出关于对话框,这时执行的地址也记录下来了
恩,最后断在0x1003341,选中最后一行,双击或者右键选择跳转到,即可跳转到目标位置。
01003341 |> \6A 02 push 2 ; /RsrcName = 2.; Case 41 of switch 01002BBE
01003343 |. FF35 80AB0001 push dword ptr [100AB80] ; |hInst = 01000000
01003349 |. FF15 EC110001 call dword ptr [<&USER32.LoadIconW>] ; \LoadIconW
0100334F |. 50 push eax ; /hIcon
01003350 |. 68 94130001 push 01001394 ; |OtherStuff = ""
01003355 |. FF35 54900001 push dword ptr [1009054] ; |Title = "记事本"
0100335B |. FF35 30980001 push dword ptr [1009830] ; |hWnd = 005501DC ('无标题 - 记事本',class='Notepad')
01003361 |. FF15 80110001 call dword ptr [<&SHELL32.ShellAboutW>; \ShellAboutW
啊,原来是执行了ShellAboutW。
如果有bug或者有什么意见的话请给我留言。
YeahTrack.rar
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法