|
由于上一次帖子的承诺,我得继续发一篇文章. 虽然目前还没有到达66贴的要求, 但是从大家的热情上来看这只是个时间上的问题.
因此晚发布还不如早发布.
稍微懂点行的人也许明白什么叫内核对象, 线程句柄 , 进程句柄之类的区别和作用.
windows现在的架构与以前的年代不同了, 每个进程之间都是独立的虚拟分页空间.
这样的好处是让系统有更高的稳定性, 按照以前的系统来说, 要是有一个程序崩溃就会造成系统的死机瘫痪或蓝屏.
现在来看只有硬件级的错误, 或者是驱动级的错误才会出现死机蓝屏. 不会因为一个普通的程序崩溃导致用户的PC也跟着一起崩溃
那么问题就来了. 现在的程序都是自己走自己的路, 它们之间是无法正常交流的. 你想随意关闭一个进程内的一些东东是不允许的.
于是微软大人也有一些方案提出. 我们允许让 dll 这个婊子归属任何进程 . dll可以让你们互相通信. 而且我们微软还有一些其他的进程之间的通信方案任由你们沟通.
ReadProcessMemory(),,WriteProcessMemory()这两个货也可以随时进出任何进程. (读 写内存)
当然, 还有很多方法也可以做到进程之间的沟通, 我只说这俩就行了. 就是因为这些进程之间的 "信使" 造就了我们现在辅助行业的繁荣景象.
如何巧妙的使用这些东西呢, 那就看你对这方面的知识了解的有多少. 只要你了解的够多了, 剩下的就是看你的思路有多狂了.
大家也看到了, 我之前的帖子光使用写内存就实现了各种想象不到功能.
还有人说我是用大漠插件了不算纯TC代码. 其实这些插件也就是调用了Win32的API而已. 如果非要较真我只能使用dllcall了 .
好了,题外话不说了. 关闭一个进程所属的线程句柄或者说内核对象的权限都是其拥有者才能做到的.
那么问题又来了, 那些杀毒软件是如何做到关闭掉其他进程的线程之类的东东呢?
微软 : " 呵呵, 我们不推荐你也这样做 . " 于是乎关于这方面技术的文章就少之又少, 微软也不提供一些比较有争议的API详细描述. 因为这会引发出很多软件上的安全问题.
摸索出这些有争议的API之后那些喜欢搞破坏的家伙们就开始蠢蠢欲动了. 也就是我们说的 " 黑客" 和经常跑路的 "作者"
有些为了利益 有些为了 好奇 . 而这些人掌握着不为人知的技术不肯公开, 使得他们都有一种高高在上的 神秘感
<<技术>> 这个词是个很抽象的东西. 就好像<<砖家>>与<<有关部门>>一样高不可攀.
当你掀开它们的遮羞布的时候你会惊奇的发现其实他们就是一根普通的几吧而已!
_______ 二 漠
OK 前面一堆侃侃杂谈 ,本次的技术内容正式开始, 老规矩 回复吧.
在这里回复 7楼 与 20楼的朋友的疑问
为什么我这么容易锁定了那个是互斥体名呢, 正如我说的, 搞的多了自然就积累了很多经验, 我正常寻找游戏的反多开的方法是先看这个进程的句柄还有句柄名, 大部分的游戏如果采用了互斥体 信号量的话他们的句柄名字有很明显的特征, 有的是以数字结尾 例如说 开第一窗口" _0 " ,开第二个窗口就是 " _1 " 如此类推 . 而数字前面的命名肯定与这个游戏的名字有点关系, 甚至有的游戏直接使用的是启动文件名作为互斥体. 以上就是我的经验.
接下来回复20楼朋友的回复 GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址 这个在TC里暂时无法使用. 以后TC支持这个函数调用了用这个最好了,为什么无法使用我也不知道 .详情可以找找我在投诉建议区发出来的求问帖子. 里面有这个函数使用的代码.
我现在的方法是. 随便找个程序, 下 bp CloseHandle 断点来断下这个地址 . 如果你实在找不到什么好程序断下这个函数的地址, 我教你一招, 自己写一个小程序, 在按钮下写上 线程.关闭句柄()
如何获取 CloseHandle函数地址请大家看29楼的朋友的分享代码!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
评分
-
查看全部评分
|