首页
社区
课程
招聘
[求助][求助]第五章里KeyFile保护的实例的不解
2014-2-11 18:52 13823

[求助][求助]第五章里KeyFile保护的实例的不解

2014-2-11 18:52
13823

p118

重新运行程序,PacMe将打开KwazyWeb.bit文件,读取数据进行计算比较。代码如下:
004016E8   .  6A 00         push    0                                ; /pOverlapped = NULL
004016EA   .  68 48344000   push    00403448                         ; |pBytesRead = PacMe.00403448
004016EF   .  6A 01         push    1                                ; |BytesToRead = 1
004016F1   .  68 FA344000   push    004034FA                         ; |Buffer = PacMe.004034FA
004016F6   .  FF35 44344000 push    dword ptr [403444]               ; |hFile = NULL
004016FC   .  E8 11010000   call    <jmp.&KERNEL32.ReadFile>         ; \ReadFile

==============================
od中加载,怎么找到 地址 004016E8 处的代码的? 求过程!  
我试了下对 check按钮 下消息断点,转到的代码处是 【地址:0040129A】

00401275  |> /6A 00         /push    0                               ; /MsgFilterMax = 0
00401277  |. |6A 00         |push    0                               ; |MsgFilterMin = 0
00401279  |. |6A 00         |push    0                               ; |hWnd = NULL
0040127B  |. |8D45 B4       |lea     eax, dword ptr [ebp-4C]         ; |
0040127E  |. |50            |push    eax                             ; |pMsg
0040127F  |. |E8 0A050000   |call    <jmp.&USER32.GetMessageA>       ; \GetMessageA
00401284  |. |0BC0          |or      eax, eax
00401286  |. |74 14         |je      short 0040129C
00401288  |. |8D45 B4       |lea     eax, dword ptr [ebp-4C]
0040128B  |. |50            |push    eax                             ; /pMsg
0040128C  |. |E8 57050000   |call    <jmp.&USER32.TranslateMessage>  ; \TranslateMessage
00401291  |. |8D45 B4       |lea     eax, dword ptr [ebp-4C]
00401294  |. |50            |push    eax                             ; /pMsg
00401295  |. |E8 E8040000   |call    <jmp.&USER32.DispatchMessageA>  ; \DispatchMessageA
0040129A  |.^\EB D9         \jmp     short 00401275

==================================================

求转到4016e8地址处代码的过程!!!!!!!!!!!

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
endison 2014-2-12 17:27
2
0
在od中,加载后,ctrl+g,查readfile,进入它的函数内,(注意观察 堆栈区)对它下断点,然后按  alt+m  对 ".text"下断点(F2快捷键)
//==============
Memory map, item 22
Address=00401000
Size=00001000 (4096.)
Owner=PacMe    00400000
Section=.text
Contains=code
Type=Imag 01001002
Access=R
Initial access=RWE

//===============

  接着按 alt+b ,在 窗口中,把对readfile下的断点 设为 disabled, 然后按F9 运行,,此时在程序领空时,就要查看 哪处代码调用的readfile函数,如果不是,就要在 断点窗口把readfile下的断点 设为 always,然后运行程序(按F9),注意观察 堆栈区,如果代码如下:

0012FC14   00401701  /CALL to ReadFile from PacMe.004016FC
0012FC18   000000A4  |hFile = 000000A4 (window)
0012FC1C   004034FA  |Buffer = PacMe.004034FA
0012FC20   00000001  |BytesToRead = 1
0012FC24   00403448  |pBytesRead = PacMe.00403448
0012FC28   00000000  \pOverlapped = NULL

0012FC14   00401701  /CALL to ReadFile from PacMe.004016FC    从这里我知道是从程序代码处调用 的,找到了 转到书上所说的 代码处地址 。

这个过程,是找到readfile函数,然后回到 程序领空,看是谁调用readfile函数的,由于readfile可能是别的调用的,所以我们就要查 下一个 是谁调用 的,直到查到 是我们所关心的调用者为止。

在这个过程中,我用了2次,第3次才转到所需要的 地址处。(我不知道这样找法对不对!)
雪    币: 16073
活跃值: (2058)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
orz1ruo 2014-2-12 18:39
3
0
不用这么麻烦吧..下个CreateFile断点就可以了吧.
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
endison 2014-2-13 18:19
4
0
是哦,看后面代码的时候发现的,CreateFile调用完后,程序代码下面接着 就是ReadFile的调用代码 。

不过书上是说对ReadFile 下断的。
游客
登录 | 注册 方可回帖
返回