首页
社区
课程
招聘
[求助]破解学习碰到的问题
发表于: 2010-11-20 20:30 5454

[求助]破解学习碰到的问题

2010-11-20 20:30
5454
偶是新手,有些破解方面问题想请教大家,在用olldbg中单步走有些call能直接走过,有些单步到就显示程序处于运行状态,这是为什么呢有的能直接走过,有点自动运行。
    假如dll没有发生重定位,是否所有的exe调用 的dll入口函数地址是相同的呢

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 457
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1、程序处于运行状态则表明该call内的代码正在执行着,还执行不到call的下一句。比如
00401000  call 00401010
00401005 mov eax,ebx
……
00401010  push ebp
……
……
401000出执行完菜会执行401005处的代码
2010-11-20 21:24
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
可能是Call一个模态对话框什么的,必须要点一下,函数返回才继续。

系统里同一dll 同一时刻只会留一份在内存中吧。。。我是菜鸟,请高手纠正。
2010-11-20 21:41
0
雪    币: 31
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个机制是怎么实现的,程序怎么知道哪个call单步到会执行,哪个call可以单步走过。
2010-11-20 22:46
0
雪    币: 457
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
晕,不是程序控制的,是人编写的代码控制的,要机器运行到哪里就到哪里。你可以设计了从一个call进去就直到程序结束。
这样说吧:call是一个子程序,你所有的功能都在这个call里,包括程序的结束,那么这时候你如果单步步过,程序就跑起来了,代码就断不下来,所以你只能单步步入。或者说,单步步过是在call的下面一句代码下断点,单步步入是在call(其实也是JMP)的目的地址下断点,断点不同,当然结果不同。这样可能好理解些。
第二个问题涉及基本概念了,你可以去找一下。所有PE结构载入到内存中都是以基址+偏移地址表示。相同的DLL被不同的程序调用时,它的基址会不同,但dll中每段代码的偏移地址是相同的。当然还是看大牛们图文并茂的解释会更清楚
2010-11-21 01:27
0
雪    币: 31
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看了一些,也自己动手去查了一些,大致也一样。
2010-11-21 19:07
0
游客
登录 | 注册 方可回帖
返回
//