DOOC作弊器的制作原理(转)三

社区服务
高级搜索
猴岛论坛CSGO反恐精英DOOC作弊器的制作原理(转)三
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
0个回复

DOOC作弊器的制作原理(转)三

楼层直达
xujuncbc

ZxID:1408681

等级: 中尉
举报 只看楼主 使用道具 楼主   发表于: 2008-08-02 0
DOOC作弊器的制作原理(转)三
第四part:用VC++6.0做好补丁程序之后,我们如果不想让人知道是对作弊器的DLL文件和~bd1523.tmp打补丁的话需要对 两个文件在exe文件数据区段的名字进行在程序当中动态解码解码后马上再清除掉留在堆栈中的痕迹。打开OLLyDBG,按Ctrl +D键选择补丁程序exe文件,右键汇编码->超级字串参考+—>查找ASCII,在弹出的窗口中双击作弊器DLL文件名或 者~bd1523.tmp文件名,就会来到一个push命令处,就是这里了,记下最左边列的0040打头的地址值。我们需要在exe文件中          找一处空白的地方即一连串00来填写我们动态解码的指令,可以这样来找,在OLLyDBG中左键单击汇编码,按Ctrl+B键,输 入随便一串00,输得越多找到的空档也越大但是不可以输太多00因为exe文件的空位通常很有限,找到后记下这个地址(汇编码最左边一列以0040打头的数值),回到刚才push指令处左键单击它,按空格键,输入jmp XXXXXXXX(XXXXXXXX 代表刚才记下的找到的空档处的地址意为跳到这里执行我们自己准备写的动态解码语句)回车,再记下这个jmp的下面的push 3x~AaC.j 
ecx 0'tm., 
和call语句还有call语句的下一行代码地址,准备写解码部分和从我们自己写的代码处返回,然后按Ctrl+G键输入刚才找到的空档位地址数值回车来到空档处开始写我们自己的解码代码,我们准备用最简单快捷的xor异或指令来解码,首先将需 待解码的字符串以4个字节为单位进行划分,比如~bd1523.tmp就划分为~bd1 3O'X;s2\d 
523. tmpNull(Null表示以空结尾其相应的ACSII码为00)然后对这些字符逐个查其ACSII码,找到是7e 62 64 31 35 fm^)u" 
32 33 2e 74 6d 70 00,然后按Ctrl+D键呼出SoftICE输入命令?7e626431^ffffffff(?表示做以下运算,^表示异或运算 ,ffffffff=-1,意为与-1做异或运算)回车,就看到输出结果了,然后依次对35 I K Dh)Zm 
32 33 2e 和74 6d 70 00做异或,记下3个结果(它们依次是81 9d 9b ce ca cd cc d1 8b 92 9f %Z6\W; (n 
ff),按Ctrl+D键关闭SoftICE窗口,返回OLLyDBG,由于堆栈是先进后出的所以从最后一个结果开始写起,按Ctrl+E键( 记得将保留大小的钩去掉)输入b88b928fff(b8表示mov tM{U6k 
eax,XXXXXXXX指令 请不要用按空格键的编辑状态来写这个mov语句这样会容易出错如果要写就倒过来写写成MOV 9IG3zMf 
EAX,FF8F928B才是正确的语句)回车,左键单击下一条语句按空格键输入xor eax,-1回车输入push eax(意为准备利用堆栈 空间来动态解码字符串~bd1523.tmp),到此3句汇编语句就可以把tmpNull字符串压入堆栈中了,然后再左键单击下一行按Ctrl+E键输入b8cacdccd1回车,左键单击下一行键盘输入xor Z~Z+Yt;,9a 
eax,-1回车,输入push eax回车,左键单击下一行按Ctrl+E键输入b88b928fff回车,左键单击下一行键盘输入xor eax,-1 回车,输入push eax回车,输入push esp(意为把esp指针指向压入了堆栈中~bd1523.tmp字符串),输入push ecx回车输入call 'O]J a- 
403b20回车(意为补上原来的2条指令),下面就是抹除堆栈中的~bd1523.tmp字符串以毁尸灭迹,由于刚才把~bd1523.tmp 相对应的16进制数值压入了堆栈占用了12个字节即Byte,push ;Ajy54}7 
esp指令又把指向这个堆栈中的~bd1523.tmp字符串的指针压入了堆栈就又占了4个Byte,所以总共比没有解码时多占用了16 个Bytes,所以就要将call指令之后的esp+8 de?lO ;8 
esp+c 和 esp+10 3处的堆栈清零,于是接着刚才的push esp指令左键单击其下一行键盘输入AND DWORD xDBHnr}[ 
PTR[ESP+8],0(意为把esp+8处与0作逻辑与运算,所有与0作逻辑与运算的结果都是0,所以功能就是清零)回车,输入AND DWORD PTR[ESP+C],0回车,输入AND DWORD PTR[ESP+10],0回车,输入add esp,c(平衡堆栈——因为原程序是没有把~bd1523.tmp 压入堆栈的而我们现在为了解码把esp堆栈指针往上移了0xc个字节所以需要把esp往下反移0xc个字节而往下移动是用ADD加 法的)好了动态解码部分写好后就需要用一个jmp f@= lK?Pfh 
XXXXXXXX语句跳回刚才跳到空档处语句的call语句的下一条语句了(这个XXXXXXXX是前面我要大家记下的)。如此一个简陋的动态解码总算完成了,有个规则就是尽量使用那些原来程序运行到这个解码部分附近语句时空闲的寄存器作为异或运算时 的寄存器这样做可以尽量避免破坏原程序,所以虽然代码是笨拙了点但是容易理解用到的寄存器又少对原程序没有造成任何 影响因此还是比较合理的。当然也可以学习Acprotect的动态解码语句:解码为 <S%kwS 
mov esi,ebx mov edi,ebx lods byte ptr[esi] rol al,3 stos byte ptr[edi] 4'-GcH 
cmp byte ptr[edi],0 jnz short XXXXXXXX [email protected] 
其相对应的机器码为8bf38bfbacc0c003aa803f0075XX(明显地它的解码机器码比我的少但是缺点是用到了大量的寄存器而且语句比较难消化理解),它的抹除证据的语句是sub Pxm~2PAm 
eax,eax mov byte prt[ebx],al inc ebx cmp byte ptr[ebx],al jnz short lw"5p)aB 
XXXXXXXX,其对应的机器码为2bc0880343380375XX(也是很简短,那么利弊得失自己选择吧,反正可以与原程序的寄存器和堆栈相平衡就怎么解码都行)。 }8qsE 
        C]+T5W\"<B 
第五part:合并和加壳我们的成果。因为你们总不想一下子就被反作弊的人通过反汇编你的exe看到你的修改思路而闪电般地封了你的作弊器吧,所以就需要请保镖了。这些保镖最强壮的无非几位Asprotect(兼容性好难破解)、Themida(老驱版和虚拟机版都很好只是与杀软特别是卡巴斯基格格不入)、XtremeProtector(多态解码、繁花——即干扰分析的垃圾指令、反dump、反attack g?caE) 
debugger等效果一流只是解码有点慢!)、Vmprotect(一虚拟机,最大用途对关键函数进行模糊化,严格不算一个壳,特别对OEP处理后查壳工具就废了,但是躲不过经验的法眼,可以加壳上壳而且非常方便,速度还可以),加壳后可能机器上的杀软要狂叫有病毒、木马之类的,这时就需要用CDS SS V1.0 beta1来做一下免杀。再打壳之前有一步必须先做,就是用一个exe捆绑机把作弊器和补丁程序打包为一个exe文件,以后执行该文件它就会自动把文件解出来还原然后自动执行,捆绑机著名的有PEbundle等,但鉴于PEbundle不是十分好用,所以这里推荐一款更为好用的FilePacker,它可以打包之余指定解包后自动执行哪些程序执行时是否隐藏这些程序的窗口界面等还有程序结束后是否自动删除,但是该FilePacker做出来的捆绑东东有个弱点就是可以直接用winrar解压!所以我们再加一步    用Thinstall对FilePacker做出来的东东压缩而且可以用Thinstall的link->splah x2g P, p- 
screen来做个好看而且迷惑反作弊者的启动画面诱导他们去破解捆绑程序而忽略解包出来的真正程序(比如我就用了一个小鬼仔的图加上一个注入器的界面用mspaint.exe合并一下做成一个bmp文件再用Thinstall的splash R]{AJ"p 
screen功能做个淡入渐出的启动图而且把注入器图右上角的那些_ □ X 全部用mspaint.exe搞成灰色以假乱真而且 Thinstall的splash *!y.!v* 
screen里面要选只要点图片一下就自动退出图片的选项让人看起来更有趣更真实),由于Thinstall在看学论坛有脱壳脚本 ——虽然只是可以脱出主程序,但是我们也不想让其他人知道我们用了Thinstall来加壳,那么怎么办呢?我们可以查看 PeID2006的userdb文件里面搜索Thinstall看看Thinstall壳的特征码是什么,找到原来是靠识别Thinstall壳入口点即EP附近大概10来条语句来达到辨认Thinstall壳的目的的。因此我们打开OLLyDBG调试器,按Ctrl+O键,选择我们用Thinstall 加过壳的exe文件,左键点击第8句sub f~D> *<L4- 
eax,1aa7因为这句的机器码(其左面的16进制数值)刚好是5个字节2d a7 1a 00 00所以刚好够写一个jmp语句所以就改它吧 ,随便记下sub eax,1aa7下一行的地址以便等一会返回,那么现在来找exe文件的空闲地方鬼佬叫这为hole即空洞——没有执行代码的地方  通常是一连串的00——如前所述在OllyDBG中按Ctrl+B随便输入一串00回车找到了空白处,随便用键盘直接输入一些无用的 语句比如说xor A?xb u*zV, 
esi,esi(因为这个esi开始时一直是等于0的所以对它进行操作不会破坏原程序的平衡)回车然后就输入jmp XXXXXXXX (XXXXXXXX是刚才记下的地址),这样一来就把Thinstall壳的特征码给改变了(多了几条无用语句嘛),这时分别对刚才在 OLLyDBG中改过的每一条语句右键单击选择复制到可执行文件—>*选择部分,每条语句都做过一遍之后用右键单击弹出 的左上角有大写D字眼的窗口中的汇编码,选择保存文件问是否覆盖时选是OLLyDBG就会自动保存你刚才修改过的地方了,原 来的exe文件OLLyDBG会自动把它备份为原程序所在目录下以.bak为后缀的文件的。好了现在再用PeID2006来查看这个 Thinstall打壳的文件就会发现什么都找不到或者乱报一个其他壳出来了从而达到了以假乱真的目的。还有需要提醒的是不管exe文件或者DLL文件加壳也好还没有加壳也好都最好用LordPE把它们的区段名去掉然后把各区段属性改成一样这样可以托 慢脱壳者的脚步让他来猜测每个区段的用途和不能通过看区段名知道加了什么壳(比如Themida就很喜欢把自己的壳所在的 段名叫做Themida生怕没有人知道一样也可以顺便做做广告)。注:LorPE使用说明:第一次使用LorPE时应该打开LorPE电Option按钮,点OK,点exit按钮关闭LorPE这样做主要是让以后鼠标右键单击可执行文件(如DLL和exe等)弹出的菜单中可 以有Load VX;tg lu2 
into PE editor(LordPE)选项方便我们直接调用LordPE的PE格式编辑窗口而省却好多麻烦;右键单击可执行文件如exe文件选Load into PE editor(LordPE),弹出了PE编辑窗,点section(意为区段)按钮,Name标题下的就是区段名称,flags标题下的    就是每个区段的属性,鼠标右键单击某个区段选edit R'q:Fc 
section header...(意为编辑区段头)把段名删除,把flags改为相同的随便一个数值如E0000040。 ~:%rg H 
    Uwqm?] 
第六part:到此你的作弊器基本已经完成,剩下的就是用RAR打包这个exe文件(因为很多exe文件都不能直接网上传播比如 QQ打成RAR方便一点),然后在打包后的RAR文件中添加注悉,再在包中放进 vYNh0)$%F 
说明.txt 文档就大功告成了。如果不想这个作弊器被人传播得很厉害的话还可以用Acprotect来对这个exe文件进行硬盘ID 、cpu信息等认证那么这个作弊器一经在某台机器运行一次之后就只有这台机器可以用而传不出去了除非牛人对Acprotect进行了破解就另当别论了。 S qQqG3F 
    :K6(`J3Y"^ 
附注:我认识的加壳工具之间的配合使用经验:Themida先打+Asprotect后打(体积大因为用了Themida兼容极差,运行速度一般);Vmprotect先打+Asprotect后打(体积比前者缩小一半多而且安全性好比较推荐,运行速度快,兼容性好);XtremeProtector先打+Asprotect后打(由于XtremeProtector的多线程解码使得程序运行极慢,但是有些自行改变过数据 区数据为动态解码的程序必须用它来打壳就像前面所说的动态解码~bd1523.tmp兼容性能一般),以上3种组合都可以使得 直接阅读反汇编码非常困难而且反调试反抓取内存就第2种组合差一点其他都很好,最猛的就是第3种组合但是运行速度最慢 ,那么速度、兼容、猛度大家自行选择。到最后用FilePacker把补丁、原作弊器等n个文件打成自执行包,再用Thinstall压 缩防止直接的winrar解压,再用OLLyDBG修改Thinstall特征码防止被人知道是Thinstall壳,完成。 '.wyfSH@ 
    \ns#l@B 
建议:建议DCOO登录器把~bd1523.tmp看看是否可以用Thinstall的猛功能——不解压到硬盘直接在内存执行文件——如果可 行则增加被破解难度,而且不可以用Themida和XtremeProtector打壳速度太慢走路又要一顿一顿了,可以试试把主要call到 的数据区中的hl函数起始地址通过手工或者工具把它们通通挪到代码区用防改保护起来——如果程序运行当中不需要改变这 些数值的话——手工可能工作量太大但是我不知道有没有自动化的工具可以搬走数据区(据我所知Acprotect、 XtremeProtector、Themida和Vmprotect这些猛壳都不行)。把codeXX后面的数值拿掉——如果是为了方便自己查找错误可 以把debug版本加上但是发布时应该拿掉。然后查找汇编码中有规律的地方把它弄乱。
« 返回列表
发帖 回复