首页
社区
课程
招聘
[讨论]输入表是否会自动为API加上A或W?
发表于: 2008-5-2 21:01 4333

[讨论]输入表是否会自动为API加上A或W?

2008-5-2 21:01
4333
今天修复一脱壳文件的输入表,其中用到了SHGetPathFromIDListA这个API,但是修复好后发现输入表里面对应的名称确是SHGetPathFromIDList,少了一个A。原以为会出问题,但是调试的时候却发现一切正常,在OEP断下时,SHGetPathFromIDList相应的位置已经找到了正确的API地址。
那么系统又是如何知道SHGetPathFromIDList是A还是W呢?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
自己顶一下……
2008-5-3 12:47
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
应该不会自动添加A或W
你查一下其IID结构,看看OriginalFirstThunk和FirstThunk的值,这两上只要一个正确,程序即可执行。
2008-5-3 15:52
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
没想到把坛主招来了……
我截了图:

似乎没有哪个指明了A或W……
上传的附件:
2008-5-3 17:20
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
"But most of the time, you will use an include file which can determine and select the appropriate API
functions for your platform. Just refer to API function names without the postfix."
这是iczelino的win32教程中提到的,做个参考......
2008-5-3 17:34
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
LS这段只是编程时需要注意的事项吧?VC对此仅仅只是一个宏定义而已,根据UNICODE宏是否被定义,来决定是A还是W,但是编译完毕后,A和W就写死了。
这一点与输入表里面的函数名是没有关系的……
2008-5-3 21:38
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
如果方便,你可以把程序传上来,这样方便他人分析原因。
2008-5-4 09:40
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
SHELL32.dll有有三个这样的函数,除了加上A和W的,还有一个没有加A的这个函数。
2008-5-4 09:58
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
我倒,终于知道是怎么回事了……
我自己写了一个MessageBoxA,发现把输入表的名称改成MessageBox后,不能运行,找不到输入点。
然后写了一个SHGetPathFromIDListA,发现把输入表的名称改成SHGetPathFromIDList后,居然可以运行???
难道是……
打开shell32.dll一看,发现SHGetPathFromIDListA和SHGetPathFromIDList这两个导出函数都有,地址还是一样的。
恍然大悟……
2008-5-4 10:23
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
测试之前,还没看见这位大哥的帖,不然就不用测试了。谢谢了……
2008-5-4 10:24
0
游客
登录 | 注册 方可回帖
返回
//