首页
社区
课程
招聘
[旧帖] [原创]近来软件都跟我作对 0.00雪花
发表于: 2007-2-24 16:59 3283

[旧帖] [原创]近来软件都跟我作对 0.00雪花

2007-2-24 16:59
3283
近来软件都跟我作对
kflnig
    刚刚搞定了。超星阅览器的更新窗口。这儿又来一个RocketDock的nag窗口。我打开它,它就如1了。


图1

    决定再搞了它,其实我绝少搞这种东西。这算是第二个吧!决定好好玩玩这个,用来骗一篇精华帖。
    看到图1有什么感想。我怎么看都怎么像只是一个MessageBoxA。可是只找到这个:
名称位于 RocketDo, 条目 236
地址=0043C334
区段=.rdata
类型=输入    (已知)
名称=USER32.MessageBoxW
    一样的了,看来Unicode是大势所趋了。好了就断它吧!
00422BC2  |>TEST BL,BL
00422BC4  |.MOV EDI,DWORD PTR DS:[<&USER32.MessageBoxW>]
00422BCA  | JE SHORT RocketDo.00422BE4
00422BCC  |.PUSH 41 ; /Style = MB_OKCANCEL|MB_ICONASTERISK|MB_APPLMODAL
00422BCE  |.PUSH RocketDo.0043E6FC             ; |Title = "Punk! Software Beta"
00422BD3  |.PUSH RocketDo.0043E5D8; |Text = "This beta software is provided for testing and localization..Please submit bugs/languages to the forums (punksoftware.com).Use at your own risk!"
00422BD8  |.PUSH EBP                           ; |hOwner
00422BD9  |.CALL EDI                           ; \MessageBoxW
00422BDB  |.CMP EAX,1
00422BDE  |. JNZ RocketDo.00422F1F
00422BE4  |> MOV DWORD PTR SS:[ESP+28],ESI
    F9一下就到了。简单,快捷,爽!看后面OD的自动注释。
    干这种事情啊!最最重要的还是修正堆栈。我们先要确定这两条语句是怎么回事
00422BDB  |.CMP EAX,1
00422BDE  |. JNZ RocketDo.00422F1F
我们必须了解点击“确定”会使EAX=1呢,还是点“取消”。所以我们在00422BDE下一个断点。然后运行软件,点确定,发现点击确定是会使EAX=1。
好了。00422BCC――00422BDE这一片代码都不要了。我呢,为了简单点,也为了不想去操纵堆栈,就直接一点了。MessageBoxW在内部看样子就已经解决了最头痛的堆栈问题,所以我们不要把MessageBoxW的参数传到堆栈里面去,而00422BCC刚好是想参数开始。
直接把00422BCC的代码改成jmp 00422BE4就可以了。
到这里我本来想结束了的,后来决定再补一点。再给大家看个nag框。


图2

哇!难道这个软件是专门为我开发的。感动啊!当然这种东西是骗不过老鸟的。
提示一点,我只是用了OD的一个功能,CTRL+E简单吧!二进制编辑。多简单啊!有不懂者请看我的文章《一些给小小鸟看的东西》。
近来干这种事情上瘾了。不练手,手痒!
《系统美化专家》这个可恶的东西。想起它就来气。没有找到真的注册码,费了挺大的劲找到一组伪的。就是说会输出成功注册而事实却没有注册的东西。


图3

这个东西很好去除,和上面的一样。
/*467F58*/  PUSH EBX
/*467F59*/  PUSH EDI
/*467F5A*/  PUSH ESI
/*467F5B*/  MOV EAX,DWORD PTR SS:[EBP-4]
/*467F5E*/  MOV EAX,DWORD PTR DS:[EAX+30]
/*467F61*/  PUSH EAX
/*467F62*/  CALL <JMP.&USER32.MessageBoxA>
/*467F67*/  MOV DWORD PTR SS:[EBP-8],EAX
本来是这样,我们改成,
/*467F58*/  JMP SHORT unpacked.00467F67
这中间的保留,但是绝对不会执行了的。
/*467F67*/  MOV DWORD PTR SS:[EBP-8],EAX
但是你点确定后还会硬叫出浏览器,去它们的网站,霸王条款,待我破了它。这种方式以前没有见到过。
下面的叫出浏览器的代码肯定实在上述代码之后。我们慢慢F8跟,经过一些地方就发现,采用的是这个ShellExecuteA。它我们还是老办法。本来是这样:
/*5E6943*/  PUSH 1
/*5E6945*/  PUSH 0
/*5E6947*/  PUSH 0
/*5E6949*/  PUSH unpacked.005E6A48
/*5E694E*/  PUSH 0
/*5E6950*/  MOV EAX,EBX
/*5E6952*/  CALL unpacked.0044D490
/*5E6957*/  PUSH EAX
/*5E6958*/  CALL <JMP.&SHELL32.ShellExecuteA>
/*5E695D*/  PUSH 1
/*5E695F*/  PUSH 0
/*5E6961*/  PUSH 0
/*5E6963*/  PUSH unpacked.005E6A48
/*5E6968*/  PUSH 0
/*5E696A*/  MOV EAX,EBX
/*5E696C*/  CALL unpacked.0044D490
/*5E6971*/  PUSH EAX
/*5E6972*/  CALL <JMP.&SHELL32.ShellExecuteA>
/*5E6977*/  POP EBX
我们改成
/*5E6943*/  JMP SHORT unpacked.005E6977
中间的,你爱怎么变就怎么变。反正绝对不会执行到。
/*5E6977*/  POP EBX
可惜的是这些东西连校验都没有,否则文章还要再精彩一点。
OK了,打完收工。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 232
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
哈哈,沙发,写得不错,支持
2007-2-24 19:06
0
游客
登录 | 注册 方可回帖
返回
//