首页
社区
课程
招聘
[原创]第一章:1.1、寻找main函数入口
发表于: 2010-5-24 18:20 58561

[原创]第一章:1.1、寻找main函数入口

2010-5-24 18:20
58561
收藏
免费 9
支持
分享
最新回复 (78)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
我等新手,受益匪浅啊,谢谢楼主!
2010-5-29 16:14
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
顶楼主。先顶后看。
2010-6-1 12:21
0
雪    币: 472
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
28
不错不错 LZ 幸苦了!
2010-6-1 13:10
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
看完了,感觉非常好。
以前总是感觉一进入ollaydbg,找不着头脑,终于有点头绪了。
谢谢楼主。
2010-6-1 14:29
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
我们单击选择函数入口后,可以看到CPU窗格下面的信息窗格中显示如下信息:

跳转来自 0041100F

      我们单击选择此信息后,点击鼠标右键,并选择【转到 JMP 来自0041100F】后即可来到上层调用函数(以后我们将之称为“返回到调用”):
=============================================
我有一个非常白痴的问题,
就是我用VC6的时候可以在信息框格中看见这个信息,
可是我用VC2008 VC2010的时候却没有这个返还信息,
这是什么原因,
而且这个问题不仅仅是这个程序,
我以前调试完美这个游戏的时候,那个做视频教程的都有这个返还的提示,
可是就是我的没有,
我百度 谷歌都没解啊。
望指教。
2010-6-1 19:19
0
雪    币: 883
活跃值: (314)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
31
我本文描述的操作都是在OllyDbg里
2010-6-2 01:01
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
抱歉,我没有说清楚,就是我用OD调试VC6编译出来的东西,会出现“跳转来之什么什么地方”
而用OD调试VS2008,VS2010的时候就没有这个提示,如果没有这个提示是什么原因,
或者有什么解决方案。
上传的附件:
2010-6-2 06:53
0
雪    币: 883
活跃值: (314)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
33
这个问题我没碰到过,你可以检查一下你的【选项】>【调试选项】>【CPU】,看看此选项卡下面的所有复选框是否为选中状态,如果不是将其全部勾选上。
2010-6-2 08:29
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
不错,分析得很好,学习了!
2010-6-2 08:46
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
我也没有显示,后来通过以下方法达到类似的效果。
在main函数中的某一点,增加一个断点,运行时,函数停在断点处,[查看]--》[调用堆栈],打开堆栈窗口(快捷键Alt+K),在调用栈可以看到所有的调用过程,如果不对的话,在调用栈窗口,点右键,有一个线程按钮,进去选择不同的线程。
然后选择某个函数,右键,就有[显示调用],[显示过程]等命令。
ps:我看了我的调试设置,cpu中的[显示跳转路径]也check上了,但不知道为什么没有显示出来。
难道和版本有关?这就不得而知了,我的版本是ollyice v1.1 汉化第二版 汉化:cao_cong
2010-6-2 09:51
0
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
楼主写的很好.赞一个
2010-6-2 10:05
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
谢谢了,还是不行,我真的怀疑是版本的问题,把
2010-6-2 13:30
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
看帖留名,看过楼主的opcode文章,最近才注意到出专题了,支持!
2010-6-8 01:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
好东东,感谢楼主,学习中。。
2010-6-13 23:27
0
雪    币: 160
活跃值: (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
40
顶一个,支持楼主!
2010-6-14 13:44
0
雪    币: 17
活跃值: (308)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
41
1、首先感谢作者的辛勤劳作。
2、希望看雪有更多像作者这样的人,为大家贡献。

我不得不说几句,其实LZ现在做的这些东西,网上已经很多资料了,比如《加密解密3》《夜读天书》、《黑客反汇编揭秘》、《IDA权威指南》还有论坛很多前人的杰作。希望作者结合这些人的精华,把文章写得更好。

我的建议:

1、以后再写文章的时候,比如类似这样的话“但是在这里我要很负责的告诉大家,”就不要加进来了,因为作为一篇学术论文(或许你不是这么认为),是不需要这些的,你应该拿出实据来说明。你可以引用C99的原话,“It shall be defined with a return type of int and with no parameters:......or in some other implementation-defined manner.”C99在这里只是“Shall be”,不是“must be”,所以给编译器的厂家很大空间,并不违背了C99的标准。
2、尽可能结合更多编译器,来说明C/C++的本质。
2010-6-14 20:43
0
雪    币: 883
活跃值: (314)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
42
非常感谢 叁毛 对本文提出的建议,并非常高兴看到有人认可我的劳动成果。
本回复对事不对人,心理承受能力差者请过滤:

接受的建议:
第一条建议我接受,虽然正像你说的那样我并没有把自己的文章当成学术论文来看待,但是正规一点还是好的。
第二条建议我接受50%,首先编译原理是一样的,而VC与其他编译器生成代码上的大体上的异同个人感觉只需几百字即可说明白,而且网上也有类似资料。
                     我接受的是你提出自己建议的初衷,希望文中的例子有对比,行文有起伏,这些我以后会着重考虑。

我的想法 ^_^ :
首先说我写的东西,我本人是一个非常反对重复发明轮子的人,当我认为自己有能力查缺补漏,并完善某个知识点时,我才会去做这件事情。晚辈斗胆在此列出 叁毛 兄提出的哪些书籍,并分别就反汇编这块说说自己的看法,不对之处还望指正。

《加密解密3》:很明显第四章的主要目的不是教会读者分析代码,而是纵观结构与逻辑(例如没有细节、没有C++类相关内容)。
《天书夜读》:这个不多作评论,笔者仅仅用了十几页来描述逆向,很显然只是想给读者建立一个概念而已。
《黑客反汇编揭秘》:简单的说一下吧,分支结构那里,那本书有关于二叉树相关的例子就列出数种情况,而我的文章中只给了一种情况,只为更利于读者读懂。
《IDA权威指南》:本书笔者刚好读完第八章,笔者纵观整书目录只发现第8.7节与第20章描述的内容只算与逆向勉强相关。

    因此我也不得不说,不知道这些书 叁毛 兄是怎么理解的,其中两本个人认为与逆向的关系简直是微乎其微。
    而单单就《加密解密3》与《黑客反汇编揭秘》这两本书来说,一个是为了破解打基础(请看那部书后面的章节),一个是面向专业的逆向人员。
    但我的文章是面向对于逆向工程有兴趣的读者写的,他们并不专业,他们的知识很不系统,因此我的文章的目的就是帮他们穿针引线,就是让他们以后能看懂类似于《黑客反汇编揭秘》这种书。

    当然,相信 叁毛 兄是抱着一颗赤诚之心对本文提出建议的,因此特将 叁毛 ID列于本系列教程之首页,以表最诚挚的感谢!!
2010-6-17 11:48
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
楼主好人 学习ing
2010-6-17 12:05
0
雪    币: 17
活跃值: (308)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
44
谢谢你。

我的小小的建议被你采纳,我觉得是本人最大的荣幸。

可能跟我水平有关系吧,对这几本书的理解跟你的理解不一样。
不管如何,LZ能否无偿地将这些总结,并跟大家分享的这种精神是可贵的。

我这里以前收集了一些资料,希望对你有用。
上传的附件:
2010-6-18 22:40
0
雪    币: 883
活跃值: (314)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
45
感谢 叁毛 提供的资料~~
2010-6-19 11:20
0
雪    币: 271
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wep
46
非常感谢LZ做一些让初学者易于接受的教程。很不错。收了。
2010-6-19 11:49
0
雪    币: 656
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
mark之~~
2010-6-19 12:19
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
学习中,加油
2010-6-20 21:43
0
雪    币: 248
活跃值: (157)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
49
我们单击选择函数入口后,可以看到CPU窗格下面的信息窗格中显示如下信息:

跳转来自 0041100F

      我们单击选择此信息后,点击鼠标右键,并选择【转到 JMP 来自0041100F】后即可来到上层调用函数(以后我们将之称为“返回到调用”):


按教程操作到此,找不到”跳转来自 XXXXXXXX“,无法进入上层调用函数啊?请指点一下
2010-6-21 22:46
0
雪    币: 248
活跃值: (157)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
50
[QUOTE=zzycqok;817384]我也没有显示,后来通过以下方法达到类似的效果。
在main函数中的某一点,增加一个断点,运行时,函数停在断点处,[查看]--》[调用堆栈],打开堆栈窗口(快捷键Alt+K),在调用栈可以看到所有的调用过程,如果不对的话,在调用栈窗口,点右键,有一个线程按钮,进去选择不同的线程。
然后选择某个函数...[/QUOTE]

谢谢,这个方法还是可以实现的!
2010-6-21 23:04
0
游客
登录 | 注册 方可回帖
返回
//