【wonderzdh】-逆向学习笔记第一篇-【某培训】学前测试-程序多开
本帖最后由 wonderzdh 于 2013-7-16 10:29 编辑【文章标题】: 【某培训】学前测试-程序多开
【文章作者】: wonderzdh
【作者主页】: http://hi.baidu.com/chicken
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
本套教程至少得更新到10课,由于没有事先安排,内容可能会比较乱,但是每字每句都是心得。
为什么我要把这些心得发出来,而不自己藏着。因为我发的东西本身就是我对学习逆向的一个梳理和总结。
赠人玫瑰,手有余香。至于你们回不回复,评不评分,我一点所谓也没有。
后续课程不会继续在【逆缘论坛】首发,【吾爱破解】转帖的形式存在,而是两个站同时更新。
也希望我的帖子在吾爱不是归类转帖,而是属于原创,本人可是吾爱未来的“原创精英”+“论坛大牛”呀。{:301_972:}
如果想求破,可直接来逆缘免费求破,网址什么的就不发了,自己百度一下。
题目如下:
逆向题:50分多开2个以上的 1.exe,运行环境 win7 x641.exe运行成功标志:出现提示框多开成功标志:多个提示框要求:1.提交分析过程2.提交处理方案,可提交实现代码(关键代码即可)3.提交处理后的运行截图注意:1.方法不限只提交一种。2.多开运行的结果必须是在同一个桌面内运行的,否则不算多开。3.多开运行的EXE必须是同一个exe在同一个目录内运行的,否则不算多开。破文如下:
运行测试://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PEID查看相关信息:
什么都没看懂就知道或许与控制台有关。首先运行程序,一闪而过,出现一个控制台窗口,其他什么没有。然后OD载入,ctrl+n查找调用的系统函数,发现可疑函数:KERNEL32.ExitProcess(必定和退出有关)、USER32.FindWindowExW(估计是和多开有关)。KERNEL32.ExitProcess肯定是退出的关键了,直接每个参考都下断。郁闷的一逼,一运行就断不下来,直接退出,估计是控制台关闭的程序。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////修改关键CALL://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////既然这样,单步吧,第一个callF7,然后F8一直走。 000D1BC8 .E8 E3F7FFFF call 1.000D13B0跟到这里,直接退出了,下断,重载跟进。 00021497 > \E8 44FDFFFF call 1.000211E0这里,又退出,下断,重载跟进。 01151253|.FFD3 call ebx这里,又退出,下断,重载跟进。 00101256|.68 48AA1000 push 2.0010AA48 ;ASCII "Okay"出现如下关键字“Okay”,此处call ebx估计是无脑退出,直接nop,保存文件2.exe。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////处理退出函数://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////载入2.exe,找到如下函数。第一句跟进,准备段首下断。第二句和第一句在一个段。第三句:00C31388 . /75 10 jnz short 1.00C3139ANop掉,不要走到下面的退出。第四句:00C31583 . /74 08 je short 1.00C3158DJmp,跳过退出。第五句:00C317F1 . /75 07 jnz short 1.00C317FAJmp,跳过退出。第六句:准备段首下断。然后保存修改后3.exe,OD载入,重新下断。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////搞定多开://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////一多开第一个进程就被结束,第二个直接不弹消息框。好吧,既然第一个弹了我就先看看弹框的那部分代码。老方法找到MessageBoxW,代码如下:013C17FA > \8B35 24913C01 mov esi,dword ptr ds:[<&USER32.MessageBo>;user32.MessageBoxW段首下断再说:013C13B0 $55 push ebp先OD载入单开看看程序走向,然后直接双开,第二个用OD载入。关键跳转,单开跳转,第二次打开就不跳了,且下面的CALL会直接给你关闭第一个的进程,那就jmp,代码如下:00CC15C7 . /75 0B jnz short 3.00CC15D4跟着走到此处:012F16DA .FF15 1C902F01 call dword ptr ds:[<&KERNEL32.WaitForSin>; \WaitForSingleObject程序就直接跑起来,走不到下面的信息框。012F16CB . /EB 04 jmp short 3.012F16D1此处直接跳到运行的call上面,既然找到信息框的部分,要跳我就直接跳到消息框去!修改如下:012F16CB /E9 2A010000 jmp 3.012F17FA运行测试:自此,修改结束,无论是XP还是W7,32还是64位,全部正常。虽然省略了部分关键部分,并没有深入剖析,但至少满足要求,管你多么牛逼,老子一个jmp到我要的地方!//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@小生我怕怕
--------------------------------------------------------------------------------
【版权声明】: 本文原创于【wonderzdh】,转载请注明作者并保持文章的完整,谢谢!
2013-6-13 00:43
矮油、、非常感谢楼主的分享!支持... 直接在退出的头部下断是不行的 因为有 push eax或者 mov eax什么的 会直接退出谢谢LZ分享终于找到关于 多开的教程了 本帖最后由 极地企鹅 于 2013-6-13 00:52 编辑
从服务器返回了一个参照。是什么问题
退出的地方调用调用好多处 直接NOP掉 看看有没相同的数据地址 自己要记下来 同样的退出 虚拟地址 直接干掉 无视退出 前排留个名,
下下来 看看……
谢谢楼主分享~ 讲的很清楚值得我们学习,谢谢楼主学习了 不错可是只是简单程序 谢谢附件及教程。 思路和方法很好,谢谢你!!希望你越来越强大 看不懂啊,有基础的吗 781536564 发表于 2013-6-30 09:00 static/image/common/back.gif
看不懂啊,有基础的吗
哪里不懂?如果是懂的很少很少甚至什么都看不懂,那只能说明你对电脑编程,系统原理,逆向破解一点都不了解。