问:既然从导出表可以看API,那么微软怎么隐藏API?

eduyu 2003-01-04 12:23:37
-
...全文
27 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-01-15
  • 打赏
  • 举报
回复
up
eduyu 2003-01-14
  • 打赏
  • 举报
回复
谢谢clumsy(希望, 你可还在?)
clumsy 2003-01-13
  • 打赏
  • 举报
回复
啊? 乱码了, 不过还是能大致看出点儿眉目来.
clumsy 2003-01-13
  • 打赏
  • 举报
回复
下面是侯捷在《Windows 95 系統程式設計大奧秘》中的相关叙述:

Unauthorized Windows 95 ㆒書對於KERNEL32.DLL 的未公開函式做了多方面的使用。
雖然這些函式並沒有.H 檔提供其原型,但它們出現於KERNEL32.DLL 的import library
㆗。所以呼叫這些函式極容易:提供㆒個函式原型,並與KERNEL32.LIB 聯結。
在Unauthorized Windows 95 ㆒書問世之後推出的Windows 95 版本㆗,這些函式從
KERNEL32.LIB ㆗消失了。真令㆟驚訝!真令㆟驚訝!這些未公開函式其實還是開放
的,但它們是以序號(而非函式名稱)開放。
這原本只會帶來㆒點小小漣漪。你還是能夠呼叫GetProcAddress,並把函式序號當作函
式名稱來傳遞(HIWORD 放0,LOWORD 放序號),並獲得函式位址。這應該是可行
的,然而,微軟卻修改了GetProcAddress 的碼,如果它發現函式是以序號的形式被指定,
並且HMODULE 又是代表KERNEL32.DLL,那麼GetProcAddress 就不會成功。在
KERNEL32.DLL 的除錯版㆗,這段碼會吐出㆒個訊息:GetProcAddress: kernel32 by id not
supported"。
現在,讓我們想想這款情事。由於未公開函式並未以函式名稱開放出來,你不能夠把㆒
個KERNEL32 函式交給GetProcAddress 以取其位址( 函式進入點) 。而如今
GetProcAddress 又拒絕你使用函式序號。顯然微軟不希望㆟們呼叫那些未被公開的KERNEL32 函式。那麼,很明顯㆞,除非你有「神奇的」KERNEL32 import library(微
軟的Win32 SDK 並不提供這玩意兒,它提供的是㆒個剝過皮的版本),你才能夠呼叫它們。
eduyu 2003-01-12
  • 打赏
  • 举报
回复
-
eduyu 2003-01-06
  • 打赏
  • 举报
回复
谢谢大家,

想请 platinum309(白金) 兄仔细说说 “搜索线性地址中的API函数名字”的具体情况。
platinum309 2003-01-05
  • 打赏
  • 举报
回复
还有一种可能,在程序运行的时候,搜索线性地址中的API函数名字,当然这是不公开的,搜索到该地址后,直接CALL
DoItFreely 2003-01-04
  • 打赏
  • 举报
回复
只给order number,不给symbol name,而且sdk的.h里面没有出现,就“隐藏”了呗
qepe 2003-01-04
  • 打赏
  • 举报
回复
隐藏的是源代码
ahalf 2003-01-04
  • 打赏
  • 举报
回复
据我所知
从未隐藏
cwanter 2003-01-04
  • 打赏
  • 举报
回复
隐藏干嘛?我们学还学不会呢:)

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧