如何隐藏DLL的dll导出函数查看器

赞助商链接
本类月下载排行
本类周下载排行
常用软件推荐
DLL Export Viewer(DLL输出函数查看器)V1.66 绿色汉化版
这个小工具可以帮你查看 DLL链接库文件中的输出函数及相应的偏移地址,这在调试程序时很方便。
&&请点击以下链接下载该软件:&DLL Export Viewer(DLL输出函数查看器)V1.66 绿色汉化版
上一软件:
下一软件:
(评论内容只代表网友观点,与本站立场无关)
为了保证您快速的下载,推荐使用[] 、[] 等专业工具下载.
为确保软件能正常使用,请使用[
]解压本站软件.
目前不少软件都捆绑流氓插件,请在安装的之时务必留意每一个安装步骤.绿色先锋本身是不会捆绑任何插件在软件中的.
该软件为网上收集,若无意中侵犯了您的版权,.我们将在收信后24小时内删除侵权内
本站下载的软件中,部分软件经过压缩加密处理,解压密码为:
感谢您对绿色先锋的支持,请将网站地址放在您的博客,空间等地方,以便我们为您及您的朋友提供更好的服务.
软件按字母排列:
中文按声母搜索:1364人阅读
估计有时你不想暴露所有的导出函数,导出一个类有时候更是不安全的。
以下这样做是否可以?
DLL中定义一个基类
class&IInterface
&&&&public:
&&&&virtual&void&DFun1()&=&0;
&&&&virtual&void&DFun2()&=&0;
导出类从这个基类派生
class&CDriver&:&public&IInterface
&&&&void&DFun1();
&&&&void&DFun2();
void&CDriver::DFun1()
void&CDriver::DFun2()
然后导出一个函数
extern&"C"&BOOL&WINAPI&DoCreateInstance(void&**ppv)
&&&&CDriver&*pIns&=&new&CD
&&&&if(pIns)
&&&&&&&&*ppv&=&(IInterface*)pI&&&
&&&&&&&&return&TRUE;
&&&&&&&&return&FALSE;
用Depends.Exe查看这个DLL可以看到只有一个DoCreateInstance
然后客户就可以这样使用
IInterface&*&pIns&=&NULL;
typedef&BOOL&(WINAPI*&LPFNDLLFUNC)(void&**);
HINSTANCE&hDLL&=&&LoadLibrary(_T("your&dll&path"));
if(hDLL&!=&NULL)
&&&&LPFNDLLFUNC&lpfnDllFunc&=&(LPFNDLLFUNC)GetProcAddress(hDLL,"DoCreateInstance");
&&&&lpfnDllFunc((void**)&pIns);
&&&&if(pIns)
&&&&&&&&pIns-&DFun1();
&&&&&&&&pIns-&DFun2();
(完) 有何错误欢迎指正。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16166次
排名:千里之外
(1)(1)(1)(3)(4)(2)(4)(1)lwglucky 的BLOG
用户名:lwglucky
文章数:250
评论数:84
访问量:653720
注册日期:
阅读量:5863
阅读量:12276
阅读量:380557
阅读量:1072813
51CTO推荐博文
from 老外的一款war3的外挂,呵呵,就是WUtil啦不得不PF,居然可以把魔法值像血条那样显示,其实这个愿望以前想过,但真的不知道如何去实现。不知道是war3本身就有这个功能,还是老外确实那么BT地实现了,这个是后话,正在研究中~~~对Mh.Pdll分析了下,发现他是注入dll实现的,因为有些功能必须是在DLL中完成,不像以前的全图,只是小小地patch下game.dll。而我发现war3运行后不能发现注入的dll模块(比如processExplorer不能发现),难道他用了我的lpk.dll同样的trick?非也,lpk.dll隐藏技术是基于peb的,仔细分析了MH.pdll后,发现他注入的思路还有点特别。虽然它也是基于远线程的。一般远线程dll注入都是把dll路径写入目标进程,然后CreateRemoteThread中把LoadLiberaryA/W作为线程起始地址。因为加载dll用的标准的LoadLiberaryA/W,所以用processExplorer之类会在目标进程发现这个dll。WUtil的伎俩是:Loader本身会加载Mh.pdll,这样mh.pdll里面IAT已经构建完成――这个不好说的,就是所有需要用的系统API都得到了的意思。其次就是重定位,在目标进程VirtualAllocEx一段跟本DLL相同大小的内存空间,得到其内存起始地址,A。在本进程也VirtualAlloc一段跟本dll相同大小的空间,B。对本进程分配的内存进行重定位操作,注意基址是按A计算,差值是本DLL基址和A之差。重定位当然需要读重定位表,也就是dlll中.reloc那段,相关结构可以参考一些资料,我这里没有去查,不过不难,直接张贴IDA中分析的吧。dwXXX = v10 - v6;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 差值do{&&& pBlockRVA = *(_DWORD *)pcurR&&& dwBlockSize = *(_DWORD *)(pcurReloc + 4);&&& dwCurSize = 8;&&& pcurReloc += 8;&&& if ( dwBlockSize & 8 )&&& {&&&&& do&&&&& {&&&&&&& itemRVA = *(_WORD *)pcurR&&&&&&& pcurReloc += 2;&&&&&&& dwCurSize += 2;&&&&&&& if ( itemRVA && 12 )&&&&&&& {&&&&&&&&& if ( itemRVA && 12 != 3 )&&&&&&&&&&& return 4;&&&&&&&&& *(_DWORD *)((char *)modBase + pBlockRVA + (itemRVA & 0xFFF)) += dwXXX;&&&&&&& }&&&&& }&&&&& while ( dwCurSize & dwBlockSize );&&& }}while ( dwBlockSize );最后把B全部WriteProcessMemory到目标进程然后CreateRemoteThread调用某个函数地址就OK拉。一般CreateRemoteThread用了就玩完了,可以设置下Wait下远线程的句柄,函数调用实现后马上就释放内存,什么痕迹也没留下。最后,就是dll导出接口的函数需要自己确定下地址。不知道时候是不是可以过某些杀软的反远线程DLL注入。哎,表达能力太差,大概只有自己看得懂。650) this.width=650;" onclick='window.open("/viewpic.php?refimg=" + this.src)'
src="/hi/jx2/j_0009.gif" style="line-height: " />要点说下:差不多就是模拟系统的LoadLiberary,不过由于loader中已经加载了dll,所以IAT部分不用考虑了,只需解决重定位问题。
了这篇文章
类别:┆阅读(0)┆评论(0)您还可以输入字
.客服电话
&&8:00-11:30,13:00-17:00(工作日)本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 查看dll导出函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信