首页
社区
课程
招聘
[旧帖] [原创]稍高级的爆破 0.00雪花
发表于: 2007-2-24 16:51 3380

[旧帖] [原创]稍高级的爆破 0.00雪花

2007-2-24 16:51
3380
稍高级的爆破
kflnig
先喝一口茶。
“颠覆传统的爆破。”本来我想这么说,原以为这种方法我算是发现者,可是我自己实在是太浅薄了。由于对壳所知甚少!本来的题目是《你没有见过的爆破》,发现这么写我实在是太丢脸了,所以改成了《稍高级的爆破》。这种方法ASPROTECT这种猛壳中经常看到!
当然这篇文章最好需要对汇编基础知识有一定了解。而这种基础只是,很少有人讲到。但是这个基础只是恰好是自己勤奋点可以用OD总结出来的。
retn,call,eip,esp,ebp,seh,push,pop
假如你对上面这些东西了如指掌的话,那么这篇文章只是给你提供一些创意,而如果你不懂,这篇文章还可以帮你学会。
push eax执行的时候会把eax放入栈内然后esp=esp-4
pop eax执行的时候会把栈顶的元素放到eax中,然后esp=esp+4
call的作用等价于push 下一行代码的地址然后jmp到call地址
retn的作用是esp=esp+4,再改变eip的值,所以retn的作用相当于pop eip。
先简单介绍一点,大家自己多多总结。
CCDebuger在教程里说:“对于新手来说,可能这个 crackme 的难度大了一点。”我也是新手。搞得气死我了,所以先搞一下爆破。
我这么搞主要是搞堆栈了。
004010E4      03F8          ADD EDI,EAX
004010E6      FC            CLD
004010E7      F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004010E9      33C9          XOR ECX,ECX
本来这里还在搞用户名长度,复制之类的,但是我很歹毒的改成了下面的代码
004010E4      68 4B114000   PUSH cycle.0040114B
004010E9      C3            RETN
直接去0040114B旅游喽!0040114B是什么。
0040114B  |.  E8 2B000000   CALL cycle.0040117B
^_^就是……:图1


图1
就是输出注册成功的call的。如果没有介绍,把我的改的这些代码给小鸟看看,他肯定很奇怪,连call都没有,怎么忽然冒出一个retn呢?
我只是提供一些建议。比如说:你还可以在一个call快结束时即一个retn前,一不小心就retn到注册去了。
给大家布置一个作业吧!大家自己去试试,或许你也“一不小心”就注册了!但是软件一不小心就崩溃了,那也不是我的罪过!
明白了一些道理之后我们就可以用不同的方法实现同样的事情了。retn就差不多等价于
pop eax
jmp eax
只是这里原来的EAX的值丢失了。把这里的eax换成其它的寄存器也一样。这种东西用来装酷拌傻还是挺好的。
本来还想写写SEH怎么应用在我们的爆破中。以前常常被SEH搞得昏天黑地,现在我们反转一下角色。看我怎么把SEH搞得昏天黑地。可是我好困,睡了!以后补起。
思路就是我们自己弄个SEH指向成功处,然后自己弄个异常,就……不是难事吧!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
不错 不错 支持一下

替换关键代码 暴破的另一种方法 值得大家去交流
2007-2-24 20:22
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
思路不错
值得借鉴
^_^
谢谢!!
2007-2-24 21:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看了好几天的代码!晕忽忽的!
这贴让我有了点感觉!不错的
2007-2-24 21:53
0
游客
登录 | 注册 方可回帖
返回
//