首页
社区
课程
招聘
[求助]求教添加跨平台函数的方法。。。急!
发表于: 2009-1-18 01:34 3177

[求助]求教添加跨平台函数的方法。。。急!

2009-1-18 01:34
3177
我把一个程序反汇编后在某个空白区域加入一个函数的调用,
E8 7ED1427C   CALL kernel32.CreateEventA(这样调用的)
为什么换台机器就调用不了呢?有几个问题不懂,希望得到大侠指教!
(注:二楼书呆彭版主说了在导入表添加此函数的方法,希望还有其它不用改导入表的方法吗?)

1:kernel32.dll 不是总是加载到他的首选地址0x77e80000处吗?那他里面的函数CreateEventA位置应该也是固定的吧?

2:查资料说要用LoadLibrary ,GetProcAddress 加载CreateEventA函数,可是我又怎么知道LoadLibrary ,GetProcAddress 这两个函数的地址呢?难道这两个函数的地址就是固定的,我那个就不是吗?

我是新手,希望指教。。。。谢谢!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
通过导入表来调用。如果要调用的函数已经被EXE所导入,那就直接call导入地址表中相应的RVA即可,如果没有导入,需要自己添加导入函数表和导入地址表。

请自己查阅一下PE文件的基本知识,特别是导入函数表的相关内容。

这是menting发的一篇文章,把导入表说和很透彻,希望对你有帮助。

http://bbs.pediy.com/showthread.php?t=53935&highlight=%E5%AF%BC%E5%85%A5+%E5%85%A5%E5%87%BD+%E5%87%BD%E6%95%B0
2009-1-18 02:57
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢 书呆彭版主。。。从导入表中加函数这是可以的,这个我会操作。但是我希望能不能不用改导入表而使用这个函数呢?刚刚看了好几篇病毒感染技术和shellcode的运行原理,有点深奥看的不是很懂,但是里面都说了一点,需要得到kernel32的内存地址,而我提出的两个问题也正是kernel32相关的,至今我还不太理解,谁能帮我解答一下呢,谢谢!!!!
2009-1-18 03:31
0
雪    币: 328
活跃值: (10)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
你可以试试搜索“API定位 API搜索”
基本原理就是绝大多数情况下kernel32.dll是被加载过了的
2009-1-18 05:44
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
kernel32.dll的基址呀,可以这样来:

mov eax, fs:0x30
mov eax, [eax + 0x0c]
mov esi, [eax + 0x0c]
lodsd
mov eax, [eax] //如果没有这一句则得到ntdll.dll的基址
mov eax, [eax + 0x18]
add eax,1000h
mov Kernel32,eax


其原理可以在论坛上搜索。这里有一篇不错的文章:


416K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0f1J5x3s2W2D9i4K6u0W2j5X3I4G2k6#2)9J5k6e0p5$3x3#2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6K6N6r3q4@1K9h3y4Q4x3V1j5@1y4U0V1I4y4o6b7J5x3o6l9^5y4e0t1H3z5e0t1#2z5o6R3J5z5g2)9J5c8R3`.`.


以及这个:



还有,我看过一个病毒,通过对64位边界进行特征匹配扫描来寻找某dll的基址,再通过它的输出表得到函数指针。

http://bbs.pediy.com/showthread.php?t=75895
上传的附件:
2009-1-18 23:28
0
游客
登录 | 注册 方可回帖
返回