注入類程序一般是用在外掛上...注入遊戲 跟遊戲混為一體 這大大加大了破解的難度, 不光要搞定程序的anti 還要搞定遊戲的保護.
沒有遊戲還需要下載遊戲...我是深惡痛絕的..我家宽带才1M..那么只能想方设法另辟蹊径,想要另辟蹊径又要先了解一下注入类程序的实现思路
注入类程序一般是取游戏的窗口标题 类名 进程名 常用的只有窗口标题跟类名
既然知道了程序是取什么来判断是否注入的 那么就自然的出现一个方法:伪造 编写一个空壳程序 窗口标题 类名 文件名 改为程序需要判断的
条件. 我没有游戏 自然不能知道这些. 就算有游戏, 拿TX的游戏举列 不过保护是取不到标题跟类名的.
继续想办法 从程序入手如何? 可以试验一下 就算一般用VMP加密的程序 也不会加密这些对验证来说无关紧要的信息 那我就能轻易的知道 程序是
在取什么判断了0040451E 8965 F4 MOV DWORD PTR SS:[EBP-C],ESP
00404521 68 BF314000 PUSH 004031BF ; 成吉思汗 1.5.75.93
00404526 68 D2314000 PUSH 004031D2 ; ChengJiSiHan WndClass
0040452B FF75 FC PUSH DWORD PTR SS:[EBP-4]
0040452E 68 00000000 PUSH 0
00404533 B8 06000000 MOV EAX,6
00404538 E8 861C0000 CALL 004061C3
很明显 第一个是标题 第二个是类名 知道了程序判断条件 就能开始伪造了
如下图
程序被欺骗了 注入了伪造的空壳程序 这样 既不用去过游戏的保护 也不用下游戏 就能直接调试了.
继续 一次讲完 调用外挂的DLL 干你自己需要干的事0040588B 68 00000000 PUSH 0
00405890 BB 04010000 MOV EBX,104
00405895 E8 2F090000 CALL dump_.004061C9
0040589A 83C4 04 ADD ESP,4
0040589D 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
004058A0 68 72324000 PUSH dump_.00403272 ; \CJSHWL.dll
004058A5 FF75 F8 PUSH DWORD PTR SS:[EBP-8]
004058A8 B9 02000000 MOV ECX,2
004058AD E8 CAFDFFFF CALL dump_.0040567C
004058B2 83C4 08 ADD ESP,8
004058B5 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
004058B8 8B5D F8 MOV EBX,DWORD PTR SS:[EBP-8]
004058BB 85DB TEST EBX,EBX
004058BD 74 09 JE SHORT dump_.004058C8
004058BF 53 PUSH EBX
004058C0 E8 EC080000 CALL dump_.004061B1
004058C5 83C4 04 ADD ESP,4
004058C8 B8 7E324000 MOV EAX,dump_.0040327E ; 初始函数
004058CD 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004058D0 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004058D3 50 PUSH EAX
004058D4 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004058D7 50 PUSH EAX
004058D8 FF75 FC PUSH DWORD PTR SS:[EBP-4]
004058DB E8 E9000000 CALL dump_.004059C9
004058E0 8945 EC MOV DWORD PTR SS:[EBP-14],EAX
以上代码就能看出 调用名为 CJSHWL.dll这个DLL 下面的初始函数就是DLL接口了 而他的这个..也只能说接口..太公开化了 用过E写注入
的就知道 他是用的是什么模块了... 完全可以随便调用
在看看Delphi写出来的代码0095E421 > \68 70F29500 PUSH winmm.0095F270 ; /niliu.dll
0095E426 . E8 8580FBFF CALL <JMP.&kernel32.LoadLibraryA> ; \LoadLibraryA
0095E42B . 8BD8 MOV EBX,EAX
0095E42D . 85DB TEST EBX,EBX
0095E42F . 76 0F JBE SHORT winmm.0095E440
0095E431 . 68 7CF29500 PUSH winmm.0095F27C ; /tales
0095E436 . 53 PUSH EBX ; |hModule
0095E437 . E8 DC7FFBFF CALL <JMP.&kernel32.GetProcAddress> ; \GetProcAddress
0095E43C . 8BD8 MOV EBX,EAX
0095E43E . FFD3 CALL EBX
0095E440 > 5B POP EBX
用Delphi写出的代码 就是容易懂 很轻松的看到了 接口函数跟调用的DLL名 直接在编程中写汇编代码 就可以调用他的DLL了 这里我就不举列了
昨天写的代码删掉了 难得重新写
有些程序是EXE验证DLL纯功能 也就是说..调用他的DLL 就能绕过验证..
绕不过验证 也能让他顺我心意 想干啥就干啥
顺带说句VMP不可怕 用VMP加密 实际上也很少有人会在这里让VMP加密 这就给了我可乘之机 VMP是强大的 但也不是万能的
破解全靠个人 方法只是取巧
PS: 以上是小菜的一点小心得 如有不足之处 请各位高手指教 |