niliu 发表于 2009-6-15 22:05

注入類程序伪造注入目标调试+调用别人DLL浅谈

注入類程序一般是用在外掛上...注入遊戲 跟遊戲混為一體這大大加大了破解的難度, 不光要搞定程序的anti 還要搞定遊戲的保護.

沒有遊戲還需要下載遊戲...我是深惡痛絕的..我家宽带才1M..那么只能想方设法另辟蹊径,想要另辟蹊径又要先了解一下注入类程序的实现思路

注入类程序一般是取游戏的窗口标题 类名 进程名 常用的只有窗口标题跟类名

   既然知道了程序是取什么来判断是否注入的 那么就自然的出现一个方法:伪造编写一个空壳程序 窗口标题 类名 文件名 改为程序需要判断的
条件.我没有游戏 自然不能知道这些. 就算有游戏,拿TX的游戏举列 不过保护是取不到标题跟类名的.

继续想办法 从程序入手如何? 可以试验一下 就算一般用VMP加密的程序 也不会加密这些对验证来说无关紧要的信息 那我就能轻易的知道 程序是
在取什么判断了0040451E    8965 F4         MOV DWORD PTR SS:,ESP
00404521    68 BF314000   PUSH 004031BF                      ; 成吉思汗 1.5.75.93
00404526    68 D2314000   PUSH 004031D2                      ; ChengJiSiHan WndClass
0040452B    FF75 FC         PUSH DWORD PTR SS:
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:,EAX
004058A0    68 72324000   PUSH dump_.00403272                      ; \CJSHWL.dll
004058A5    FF75 F8         PUSH DWORD PTR SS:
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:,EAX
004058B8    8B5D F8         MOV EBX,DWORD PTR SS:
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:,EAX
004058D0    8D45 F0         LEA EAX,DWORD PTR SS:
004058D3    50            PUSH EAX
004058D4    8D45 F4         LEA EAX,DWORD PTR SS:
004058D7    50            PUSH EAX
004058D8    FF75 FC         PUSH DWORD PTR SS:
004058DB    E8 E9000000   CALL dump_.004059C9
004058E0    8945 EC         MOV DWORD PTR SS:,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: 以上是小菜的一点小心得 如有不足之处 请各位高手指教

小鱼爱逆流 发表于 2009-6-15 22:07

:victory:抢完沙发慢慢看

zapline 发表于 2009-6-15 22:08

:lol膜拜逆牛的大作

shaopeng 发表于 2009-6-15 22:23

支持逆流师傅类作品。。。

晓外 发表于 2009-6-15 22:09

沙发没有了。。。。。。做板凳吧,,马桶留给下边的

nwei007 发表于 2009-6-16 04:14

受教了……期待逆流新作……

Tale 发表于 2009-6-16 08:00

输出函数可以用PEID查看,但调用需要参数啊,怎么知道这些参数

niliu 发表于 2009-6-16 11:12

T仔就用你的劫持源碼來 我給你寫的彙編代碼 就能調用你的DLL0044E1D9      B8 ED1BB276   MOV EAX,76B21BED
0044E1DE      B9 1977937C   MOV ECX,7C937719
0044E1E3      BA 78E1997C   MOV EDX,7C99E178
0044E1E8      BB 0000B176   MOV EBX,76B10000
0044E1ED      BC 44F81200   MOV ESP,12F844
0044E1F2      BD 84F81200   MOV EBP,12F884
0044E1F7      BE 5C269600   MOV ESI,96265C
0044E1FC      BF 74F81200   MOV EDI,12F874
0044E201      68 A5104000   PUSH Project1.004010A5                   ;ASCII "niliu.dll"
0044E206      E8 703B3B7C   CALL kernel32.LoadLibraryA
0044E20B      8BD8          MOV EBX,EAX
0044E20D      85DB          TEST EBX,EBX
0044E20F      76 0F         JBE SHORT Project1.0044E220
0044E211      68 71714000   PUSH Project1.00407171                   ;ASCII "tales"
0044E216      53            PUSH EBX
0044E217      E8 D4CB3B7C   CALL kernel32.GetProcAddress
0044E21C      8BD8          MOV EBX,EAX
0044E21E      FFD3          CALL EBX
0044E220      5B            POP EBX                                  ;niliu.tales

小鱼爱逆流 发表于 2009-6-16 11:17



上述代碼不是完整的 還需要改的地方很多 只是舉列證明下效果 T仔還有問題沒.

Tale 发表于 2009-6-16 18:52

手机看不清楚,回家看看,我那dll代码直接写在入口,只要一加载程序就启动了。回家再说吧
页: [1] 2 3
查看完整版本: 注入類程序伪造注入目标调试+调用别人DLL浅谈