首页
社区
课程
招聘
在壳中如何调用其他dll中的函数
发表于: 2006-2-15 17:17 4388

在壳中如何调用其他dll中的函数

2006-2-15 17:17
4388
一般的壳stub都是调用kernel32.dll中的函数.但如果加载其他的dll,可能会出现问题,那么如果在壳中加载其他的dll呢?

我遇到的问题是,kernel32.dll最底层的dll,他不依靠其他的dll(至少常用的函数是这样的).但我如果引用其他的dll,比如gdi32.dll,他依靠了很多其他的dll,但外壳启动时,我们还没有恢复原来程序的iat,也可能原来程序的iat中没有这个dll,所以程序会出错.

我也许说得不太明白,希望高人能指点一下!

多谢!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
http://bbs.pediy.com//showthread.php?s=&threadid=20230

LoadLibrary
GetProcAddress
当然一些强壳这个2个函数都是自己实现的。
2006-2-15 17:23
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
这个方法我试过了,对于系统函数问题不大(比如messagebox),但是似乎不稳定,如果有很长的代码,系统会出现不能访问的错误,使用olly调试,会发信系统会跳转到一个无法访问的地址(这个地址407f30左右).

这个问题在校验代码(对加密程序有效性校验,比如时间.次数.)少的时候没问题,但如果写了大段的校验代码,程序就报错.但出错的位置并不是调用函数时,一般出现在copymemory中,很奇怪.

对了,我最后把所有校验信息写如了一个dll,再用loadlibrary调这个dll,还是出现同样的问题.郁闷

另,我的壳是用C++写的.
2006-2-15 17:50
0
雪    币: 230
活跃值: (101)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
http://bbs.pediy.com//showthread.php?s=&threadid=20230

LoadLibrary
GetProcAddress
当然一些强壳这个2个函数都是自己实现的。


多谢看雪了,问题解决了,您说的方法没错,我的问题出在我的stub链接了libcmt.lib,看上去没什么问题,但就是出错,最后我换了msvcrt.lib,问题就解决了.
2006-2-15 21:50
0
游客
登录 | 注册 方可回帖
返回
//