Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248750
  • 博文数量: 65
  • 博客积分: 2758
  • 博客等级: 少校
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-25 00:23
文章分类

全部博文(65)

文章存档

2011年(4)

2010年(1)

2009年(60)

我的朋友

分类:

2009-11-12 15:58:37

上一节我讲解了吃血的CALL,吃蓝,回城,其实跟吃血一样,我个人觉得没必要去写了。如果仔细看过我的文章的话,我坚信一定可以做出来的。

好的,废话不多说,我们继续找“冰系”“火系”CALL以及如何去表达它。
打开OD和找CALL练习并且附加,下断,一系列工作不再赘述。

单击“冰系”-----断了。根据上次我们所说的,CALL在第四层中。我们直接进入第四层


好的,我们看到了RETN之前的4条语句,


这里就是我们要找的CALL了。好的,在此CALL上下断!(F2)并去掉原来的断(ALT+B)
OK,F9运行程序并再次点击“冰系”使其断下。



很好,很好,在我们要找的CALL处断下了。

OK,首先看汇编语句

我们首先要判断,那条语句对CALL产生了作用,那么如何判断呢?
我目前有三个途径可以判断,一是根据断点判断,二是根据寄存器判断,三是跟踪判断。

好的,这里我们先说下断点判断。
在上面四条语句中全部下断。并让程序恢复运行状态。


好的,再次点击“冰系”我们发现了一个问题。就是前面两条命令并没有参与CALL的调用动作,因为直接跳过了,并没有在语句中断下。于此判断,这两个语句跟这里的CALL无关。




OK,既然确定了CALL的因素,我们就来分析,应该如何去调用它。
下面三个图大家看一下,我给大家一个对比






好,通过上面的图,大家可以发现

当命令
mov edx,1执行的时候,调用了寄存器中EAX ECX EDX中的值
CALL 00452DF8 执行的之后只调用了EDX。也就是说,这里的EDX是影响CALL的因素。
RETN EAX ECX EDX 这里返回的时候也是返回了三个值,正好跟EDX的因素有关系。

现在这样就确定了,EAX,ECX,EDX就是CALL的因素。

那么该如何调用应该不用我去说了吧。不清楚的去看我的第一篇文章,

有变化的仅仅是这里其中一条命令应该为 mov edx,1

好的。如果不明白,就留言吧,我会发代码上来的。


回答。3.4楼问题,这里的edx,1是要传递的。其实大可不必来问,自己动手做一下,什么都明白了
阅读(2419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~