别人七月七抱着妹妹啃,我特么七月七抱着键盘摸........不说了,都是泪.....
不知道从哪里说起,所以想到哪儿说到哪儿吧.
网上浏览了下,看关于某p的话题很多,好多人说什么我的xxx满好的,就是第三方无法解决,或者我的xxx很好,就是木马加载无法解决.....所以,在这个你们都抱着妹妹啃的日子里,我来写个如何避免第三方的文档吧,只期待你们赚钱之后,能介绍个妹妹让我下个7月7不再抱键盘.
随手打,所以,api名字如果有错勿纠结,自己根据意思猜正确的名称,挖卡卡.
1,什么是第三方?一句话解决:
不是系统本身的,不是游戏本身的,不是白名单的,位于黑名单的,大概能统统称为第三方.
2,第三方是如何检测的?
2.1 我们要成为第三方,首先得插进去,否则人家不会有任何感觉,对吧?
如何插?
apc?呵呵嗒.RtlDispatchApc 的inline hook等着你呢.
apc
imm输入法?呵呵哒. 下面这里你以为是玩的?
imm
lsp?呵呵嗒.
启动时候对nids,lsp的检测让你adsl都要断你忘记了?而且,通过lsp加载的,最终也是loadlibray.
createremotethread?呵呵嗒.loadlibray?
ldr
以上都是被用烂了的,也是重点检测的,在tcj.dll里都能找到专用的检测函数,何必呢?何必对着干迎难而上呢?是嫌弃windows的系统dll太少?还是嫌弃死得不够快?
那怎么样才能让它答应你:我只憎憎不进去?简单得很,随便找个windows\syswow64下的系统dll,直接修改dllmain函数里的必定执行的一段代码,先jmp到stub,stub loadlibray后又freelibray,然后再补齐jmp时候修改的代码,再jmp回去.
1
你看,loadlibray叫只憎憎,free了证明你真没进去.形象吧?假设这里我们loadlibray的名字是gate.dll,这是个中转dll,方便我们写更多的逻辑处理更多的保护和反保护.剩下的事情,咱们就是在gate.dll里完成了.
2.2插了个dll进去又free了,如何完成自己的功能?gate.dll如何编写?
首先需要确认一点,我们不能用loadlibray加载我们真实的功能dll,因为那容易被抓特征,玩完.那只剩下内存加载了.于是坑次坑次的写好内存加载,运行...哦豁,第三方非法模块???????????????
好吧,别急.内存加载有1000种写法.你会几种?那不重要!关键是他是怎么检测的咱们的内存?拿出IDA,想一下检测内存一般会用到哪些函数?tcj.dll走起:
mem1
我看这代码长得就像坏人!!
mem2
这娘们儿也不像个好人哪.....
那么,我们hook一下VirtualQueryEx?
mem3
我#,这里还有个更坏的!
那怎么办?能发现的问题都不是问题.安排!全hook,过滤自己的内存段,返回不符合检测条件的属性.圆满.
内存暴搜处理了,加载,运行!我草还是第三方....小didi,你太猴急了:
inline4
这一片的inline,你可以视而不见,但是他可是把你盯得死死的.....
安排,能自己实现的自己实现,不管是jmp头部还是用替代方式,一个一个安排.....
把他inline的函数都绕开...这下完美了!
加载,运行!
我草.....
还是第三方.....
findfilea
这娘们儿你以为清醇?呵呵嗒。。。。
hook一下,看看他查了些什么。。。。哦,.ini,.txt,cheat engine.........查得多哦。安排。。。。。该删删该改名改,该修改返回值修改!!!
再加栽,完美!
就绛。
|