社区
Windows SDK/API
帖子详情
API拦截的简单问题!大家都近来鄙视鄙视!
woonia
2003-05-09 12:10:47
想用输入函数表的方式来替换API!但我想知道如果要被替换的的程序里的函数是用序号来引用的而不是用函数名引用,该怎么替换啊?大概是怎么一个思想?谢谢!
...全文
35
11
打赏
收藏
API拦截的简单问题!大家都近来鄙视鄙视!
想用输入函数表的方式来替换API!但我想知道如果要被替换的的程序里的函数是用序号来引用的而不是用函数名引用,该怎么替换啊?大概是怎么一个思想?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ypyRock
2003-05-13
打赏
举报
回复
进来鄙视鄙视
888888888888
2003-05-11
打赏
举报
回复
关注
yansea
2003-05-11
打赏
举报
回复
当.exe文件被载入的时候,这个数组的内容会被填充为api的实际地址。
你可以看看罗云彬的《win32汇编语言程序设计》中最后一章,就是讨论的pe文件。
yansea
2003-05-09
打赏
举报
回复
用地址判断。其实我在实际的编写过程中发现只能用地址来判断是否是目标api。
先从dll的输出表中找到实际api地址,保存下来。
然后遍历目标程序的输入表,比对地址是否与找到的真实地址一致,一致就进行替换。
开始的时候我也以为可以用api名字在输入表中查找,但是对实际在入内存的程序查找发现,那个装着api名字的数组地址是0,rva吧,我记不清了。不过没关系,地址都存在。
woonia
2003-05-09
打赏
举报
回复
也就是问为什么Func := pointer(Integer(DOS) + ImportDesc.LookupTable);是函数的地址?谢谢!
woonia
2003-05-09
打赏
举报
回复
我还是有点不明白就是:Func := pointer(Integer(DOS) + ImportDesc.LookupTable);为什么是
函数的地址!我看有的书写的是如果ImportDesc.LookupTable的最高位是0,那么他指向一个IMPORTBYNAME数组,该数组里面有函数的名字!而高位为1时,则说明是用序号引用的,会指向一个函数的序号!所以请问为什么Func := pointer(Integer(DOS) + ImportDesc.LookupTable);会是一个函数的地址呢?
yansea
2003-05-09
打赏
举报
回复
还是不对,我说错了!
DLL := PChar(Integer(Dos) + ImportDesc^.Name); //得到dll名字
RepointAddrInModule(GetModuleHandle(PChar(DLL)), OldFunc, NewFunc);//?从dll中查找目标api函数?
Func := pointer(Integer(DOS) + ImportDesc.LookupTable);//函数地址
while Func^ <> nil do
qxj
2003-05-09
打赏
举报
回复
路过
yansea
2003-05-09
打赏
举报
回复
“代码并不难,Func := pointer(Integer(DOS) + ImportDesc.LookupTable);这是取得函数地址。”这个不对,应该是“取得LookupTable表,导入表的地址”
yansea
2003-05-09
打赏
举报
回复
大家定义的名字不一样而已,看看我的定义:
type
PImageImportDescriptor = ^IMAGE_IMPORT_DESCRIPTOR;
IMAGE_IMPORT_DESCRIPTOR = Record
OriginalFirstThunk :DWORD; //RVA
TimeDateStamp :DWORD;
ForwarderChain :DWORD;
Name :DWORD;
FirstThunk :DWORD; //RVA
end;
建议你还是用我这样的定义,当然内容都一样,不过名字我可是参MASM中windows.inc里的说明呀^_^
代码并不难,Func := pointer(Integer(DOS) + ImportDesc.LookupTable);这是取得函数地址。那个dos应该就是$400000吧,.exe基地址。
还是贴点我代码吧,这个解释起来比较容易
RePointer := ImageDirectoryEntryToData(Pointer($00400000),true,IMAGE_DIRECTORY_ENTRY_IMPORT,xCount);
//取得.exe输入表地址;
while PImageImportDescriptor(RePointer)^.Name <> 0 do //dll名字不为空,条件
begin
pThunk := DWORD($00400000+PImageImportDescriptor(RePointer)^.FirstThunk);
//这句应该你问的那个意思一样吧,取得该数组地址
.....
这里就判断了,没什么意思
注意 LongWord(Pointer(pThunk)^) 就是api的实际地址了,用这个值同从dll中得到的地址比较
Inc(pThunk,4);
//循环,累加
end;
woonia
2003-05-09
打赏
举报
回复
请问思宏:
//************************************
type //定义一个入口结构
PImage_Import_Entry = ^Image_Import_Entry;
Image_Import_Entry = record
Characteristics: DWORD;
TimeDateStamp: DWORD;
MajorVersion: Word;
MinorVersion: Word;
Name: DWORD;
LookupTable: DWORD;
end;
这里代码略。。。
DLL := PChar(Integer(Dos) + ImportDesc^.Name);
RepointAddrInModule(GetModuleHandle(PChar(DLL)), OldFunc, NewFunc);
Func := pointer(Integer(DOS) + ImportDesc.LookupTable);
while Func^ <> nil do
begin
f := Func^;
略。。。
上面是CSDN里的关于APIHOOK的文章!我有个地方不明白,那就是:Func := pointer(Integer(DOS) + ImportDesc.LookupTable);这里的func是什么意思?func^是指向一个输入函数的地址
还是指向一个输入函数的函数名?这里我有点搞不清楚!
这个回答完就结贴了!谢谢!
playframework
拦截
器
前几天没搞清楚play
拦截
器正确用法被架构师狠狠地
鄙视
了一把,妈的,早上起来就把文档狠狠地温习了一遍,加上自己的想法,记录之。 (详见play官方文档) 我觉得play的
拦截
器有点AOP的思想,相当于struts的filter,play的
拦截
器使用注解方式实现的。 源码定义了这么几种注解:@before、@after、@catch、@finally 可谓是三百六十度无死角的
拦截
了。
Spring AOP
拦截
失效
最近做个人产品, 由于新模块其中一个新数据表需要关联到旧模块的一个数据表,存在主从关系,导致新旧模块进行相关操作(删除)时,需要维系完整性。 考虑到不想污染旧模块(不想旧模块感知新模块的存在),因此这里在新模块中,利用AOP
拦截
旧模块DAO的删除方法,使当旧模块的数据删除之前,能够先进行新模块的完整性关系删除。 但
问题
出来了,AOP
拦截
没办法
拦截
到对应的DAO方法。一开始以为是配置出错...
科班出身不懂跨域,再次成功被前端
鄙视
!
针对跨域这个词,相信不少测试同学应该还是比较陌生,特别是非科班出家的测试从业者笔者为何今天分享该知识点,是因为上周自己的团队内部就因为小程序分享页的功能涉及到跨域的
问题
导致请求直接404;...
为什么很多人觉得前端很
简单
?
前端看似
简单
,实则复杂远超表象。视觉反馈快感掩盖了90%的隐性工作量,包括对抗失控的宿主环境、处理异步竞态灾难和防范内存泄漏。资深工程师用复杂机制伪装出简洁界面,在机器逻辑与人类行为间架起桥梁。
使用python监听、模拟鼠标键盘事件
最近守望职业选手疑似开挂事件挺热闹的,在下小菜一枚,并不能从视频中看出端倪。看了一些关于外挂的讨论,自动点射和压枪只需在鼠标驱动上做些改动即可,自瞄或其他高级功能则需要读内存或修改游戏文件,检测也更容易。 士兵76长按左键扫射4发子弹之后准星就会小范围随机飘,所以想自己实现一个长按左键变自动点射的程序。 仅作测试使用,
鄙视
一切外挂,玩游戏就好好玩。 选择使用python,用到的库p...
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章