首页
社区
课程
招聘
[原创]52pojie第一题前半段,小菜写着玩,求轻喷
发表于: 2016-3-29 09:44 4707

[原创]52pojie第一题前半段,小菜写着玩,求轻喷

2016-3-29 09:44
4707
昨晚看到已经有大神发算法的分析了(算法好难,F5之后依旧棘手,动手模仿到一半放弃了,嗯,还欠仙果大牛一篇帖子),小菜只是写点先前的debug分析,只为博诸君一笑。(顺路求个职?)

周一才看到比赛,于是想弄一弄试试看,时间匆匆,昨晚麦洛克菲同学群里,有朋友说看到有分析贴了,一时手痒,就来发帖了。

流程基本是这样的:
1、bp user32!MessageBox*,先找到被调用的是MessageBoxA,栈回溯,找到xxx地址,扔到ida里面,发现向前面的代码篇下断点竟然无效。

2、由于可以无限次点“Register”按钮,对堆栈的固定位置下ba w1 xxxx "u eip L1; dd xxxx L1; gc"断点。至于是哪个参数,想想代码优化应该知道,成功与失败一个参数之间。

3、找到位置后,向上翻一下基本就能找到cmp xl, 1;中间吧啦吧啦一段,接了一个jnz的地方,后面的跳转对应这个不同参数的选择。

4、再向上能看到好几个push exx; 吧啦吧啦; pop exx;或者pushad; 吧啦吧啦; popad;的地方,这里exx根本就不会改变嘛,再向上就能看到一个call,这个call前后没有该死的push和pop操作,那必然就是这里了。

5、到了这里发现实际已经偷偷申请了一个新空间在里面放了个dll性质的东东(还有全局变量存储api),跟进去之后,跳过几个看似很棘手的函数,就能到大牛HighHand昨天放的算法分析的地方。


Warning:
1、很多加花的地方,混淆了好几个关键的api call,这里最好信ida,别信od和windbg;
2、堆里面的代码其实找到几个全局变量,就会发现其实实现的功能比ida看上去的简单多了;

3、堆里面的代码怎么扔到ida里面分析?请自行在论坛内搜索od的用法。


BTW:
1、想注册好久的52pojie一直有各种事情错过注册时间,感觉好愧疚,于是在比赛结束之前,就不放具体的地址和贴图了,就是个调试的大概路径;
2、关于MessageBoxA,写这里的时候,想了想他喵的,可以直接用ida找字符串的,当时**了,大家见笑了;
3、再次膜拜算法大牛牛。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 6
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持楼主
2016-3-29 17:22
0
雪    币: 25
活跃值: (68)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,我就一路人小菜,感谢支持。
2016-3-29 23:17
0
游客
登录 | 注册 方可回帖
返回
//