怎样防止其他dll注入到我的exe中
答案:2 悬赏:50 手机版
解决时间 2021-02-01 04:30
- 提问者网友:雪舞兮
- 2021-01-31 07:05
怎样防止其他dll注入到我的exe中
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-01-31 07:49
在Windows操作系统中,访问其他进程的内存比较容易。。。
操作系统本身都会被虚拟,想要不被破解、不被修改很难。。。
在C/S结构设计上,S端要做很多权限判断,重要逻辑不要依赖C端。。。
如果仅仅是单机程序,那么用户爱怎么玩怎么玩去。。。
关键的一点,你的软件提得起别人破解的兴趣不?如果软件写得差,开源也没人要。
操作系统本身都会被虚拟,想要不被破解、不被修改很难。。。
在C/S结构设计上,S端要做很多权限判断,重要逻辑不要依赖C端。。。
如果仅仅是单机程序,那么用户爱怎么玩怎么玩去。。。
关键的一点,你的软件提得起别人破解的兴趣不?如果软件写得差,开源也没人要。
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-01-31 09:06
这是一个用于拦截winsock api的程序,主要的目的并不是为了截获数据包,而是为了能从第三方角度方便地观察二进制程序调用winsock api的情况,最直接最原始一点的想法,是为了能比较方便地调试自己写的windows网络应用程序。 关于拦截api的方法有很多种,网上各种文章到处散布。我用的是全局消息钩子注入进程空间,修改api调用地址。各种方法各有优缺点,比如修改import table表,要对pe文件格式有比较深入的了解,但我不了解;trojan dll,要替换整个dll,而且winsock有2个版本,分别对应了2个dll文件,一个是wsock32.dll,另一个是ws2_32.dll,每个dll的导出函数有100多个,工作量太大;还有用detours开发包,说实话,文档不够丰富,而且1.5版还是免费使用,2.0的就要money了,等等等等。不是说其它方法不好,而是说,我现在采用的方法刚好比较符合我的需求,但由此带来一个重要的问题是,不能拦截console程序,因为没有窗口消息队列,就像现在aweay的myspy中debugview功能,是通过拦截outputdebugstring这api来实现的,所以写的console程序调用的outputdebugstring是拦截不到的,不像debugtrack,是通过outputdebugstring的实现原理来捕捉的,可以拦截所有的输出。 曾经看到luocong通过seh来实现api hook的例子程序,程序是用win32asm写的,看了几遍发现,似乎用win32asm才能比较方便地利用seh的这个“副作用”,因为除了汇编以外,其它高级语言要获得函数的参数值很是麻烦,但或许只是因为我自己水平太臭吧,不管怎么说,反正现在我是用不上这技术了。自从在llyf spy中开始用过hook后,已经有点依赖这技术的感觉了,遇到什么稍微麻烦点的问题,就会想到用hook,而且现在也有点习惯用bcb6来编译dll,尽管这个dll是用纯sdk写成的,可以很方便地移植到vc上来编译,只是因为上次遇到过的奇怪的兼容性问题,使得我把bcb作为编译用于搭配bcb编译的exe程序的dll的首要选择。 经过一番键盘搏击,根据自己的需求估计,hook了24个api:recv、recvfrom、send、sendto、socket、closesocket、accept、listen、bind、connect这些都有2份,wsock32.dll和ws2_32.dll各1份,wsasend、wsasendto、wsarecv、wsarecvfrom这些只有ws2_32.dll里的那份。不过目前只是能获得api的基本信息,像api名字,返回值,wsagetlasterror值,pid这些。下一步的计划,是要能导出api的调用参数列表和传输数据内容。参数列表应该不是件很难的事,而传输数据的显示,好像惯例都是用16进制加ascii码加偏移显示的,还要花些时间在这个上面。 另外一个问题,则是同步问题。我是用内存映射来进行进程间通信的,万一在读的时候,另一个进程在写,就不好了,所以还要找一个适当的同步机制。最后一点,当然是稳定性,也是最重要的一点,不能因为这个进程的存在,使得其它程序也牵连受影响。本文来自csdn博客,转载请标明出处:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯