zoukankan      html  css  js  c++  java
  • 一款魔兽盗号木马分析

    这款魔兽盗号木马是模仿“多玩魔兽盒子”欺骗用户从而进行盗号的,请看“多玩魔兽盒子”官方网站:http://wow.duowan.com/wowbox1/,

    木马模仿的钓鱼网站:http://www.tudouw.com/ 。可以看出做得很相似,稍不留意的话就会被钓鱼。大家该问了,这样的网站怎么会访问到的啊,

    如果魔兽玩家通过百度搜索“多玩魔兽盒子”,第一页便会有这个钓鱼网站。可以看出万恶的百度给它做了竞价排名,这就叫做为虎作伥、周助为虐,

    这个百度得记一大过,它只会圈钱了。网络太可怕了,什么都不敢相信了……

    再说这个木马,除了网页上做得很相似外。它的下载文件也和真正的“多玩魔兽盒子”差不多,只是稍微大了一些,因为捆绑了一个木马。

    下载后运行,它会先释放出真正的“多玩魔兽盒子”并运行,此时木马也被释放并运行,但是用户不会察觉有什么一样。

    木马释放出一个m9.exe,通过调用命令行:

    net stop cryptsvc

    sc config cryptsvc start = disabled

    sc delete cryptsvc

    关闭文件保护系统,并将原始系统dll文件:ksuer.dll,midimap.dll,msimg32.dll分别改名为:yuksuer.dll,yumidimap.dll,yumsimg32.dll。

    并将木马dll:system.dll替换掉原始系统dll文件:ksuer.dll,midimap.dll,msimg32.dll。另外还备份一份sysapp10.dll文件在系统目录下。

    dllcache中的上述三个系统dll文件也被替换位木马dll,魔兽安装目录下也会多了ksuer.dll,midimap.dll,msimg32.dll几个文件,也是木马dll。

    通过查看木马dll可以看出,里面的导出函数有一部分做了重定向,实际上是劫持了上述的几个dll文件。

    m9.exe最后通过rundll32.exe调用木马dll的导出函数ServerMain传递m9的文件路径进去,目的是让木马dll的这个函数帮助删除m9文件。

    木马dll

    如果当前注入的进程是wow.exe,删除其目录下的scan.dll,scan.dll.new,据说这两个文件是魔兽的木马/外挂扫描模块。

    修改send,recv,sendto函数开头的代码,应该是做了hook。

    会有枚举魔兽窗口,以及截图相关的操作,具体意义不详。

    通过RegisterShellHookWindow和SetWindowLong(GWL_WNDPROC)拦截窗口创建,这个可以确定运行的是不是魔兽世界进程,其他进程可以直接忽略。

    这个RegisterShellHookWindowWH_CBT钩子一样强劲,大家可以学习下。

    下面讲解主要盗号技术:特征码定位拦截。

    我截取了木马中的一些特征并稍作整理如下:

    10001D47  |.  C645 F4 8B    mov     byte ptr [ebp-C], 8B
    10001D4B |. C645 F5 33 mov byte ptr [ebp-B], 33
    10001D4F |. C645 F6 03 mov byte ptr [ebp-A], 3
    10001D53 |. C645 F7 F0 mov byte ptr [ebp-9], 0F0
    10001D57 |. C645 F8 B9 mov byte ptr [ebp-8], 0B9
    10001D5B |. C645 F9 55 mov byte ptr [ebp-7], 55
    ??
    ??
    ??
    ff
    ff

    8B3303F0B955??????FFFF

    --------------------
    528D85??FB50
    ---------------

    10001F66 |. C645 F8 8B mov byte ptr [ebp-8], 8B
    10001F6A |. C645 F9 55 mov byte ptr [ebp-7], 55
    10001F6E |. C645 FA 10 mov byte ptr [ebp-6], 10
    10001F72 |. C645 FB 89 mov byte ptr [ebp-5], 89
    10001F76 |. C645 FC 4B mov byte ptr [ebp-4], 4B
    10001F7A |. C645 FD 10 mov byte ptr [ebp-3], 10

    8B5510894B10

    169FA36

    0169FA30 |> \8B45 08 mov eax, dword ptr [ebp+8]
    0169FA33 |. 8B4D 0C mov ecx, dword ptr [ebp+C]
    0169FA36 |. 8B55 10 mov edx, dword ptr [ebp+10]


    D9E0DEC1DD1C2450

    894DF88BC8

    0FB6888501????51

    83C004508B4DE883C104


    ------------------------------

    8B3303F0B955??????FFFF 123F005
    528D85??FB????50 10ba4f0
    8B5510894B10 169FA36
    D9E0DEC1DD1C2450 11C3570 16C831E
    56508B425CFFD05F5E8BE55D 123eeea
    894DF88BC8 11C3547 135E269 14C19D0 161EF74 16BFFBE
    0FB6888501????51 155C346 进入魔兽世界的时候会断下
    83C004508B4DE883C104 10b362a

    67452301

    016E8318 |. DF6D F8 fild qword ptr [ebp-8]
    016E831B |. 83EC 08 sub esp, 8
    016E831E |. D9E0 fchs
    016E8320 |. DEC1 faddp st(1), st
    016E8322 |. DD1C24 fstp qword ptr [esp]
    016E8325 |. 50 push eax
    016E8326 |. E8 552DADFF call 011BB080

    上面的特征都有一定的意义,我这里取一个典型的例子来说明。

    56508B425CFFD05F5E8BE55D

    这段特征在魔兽世界进程里搜索到后,是一段代码:

    001AEEEA 56 push esi
    001AEEEB 50 push eax
    001AEEEC 8B42 5C mov eax,dword ptr ds:[edx+5C]
    001AEEEF FFD0 call eax

    找到后就对上面的地址处下断点,并在魔兽世界的账号密码登录框中输入后点击登录,便中段下来,通过观察寄存器或者堆栈信息就能看到明文的账号和密码。

    用回溯法找到几个关键的调用代码:

    0155A070  /$  55            push    ebp
    0155A071 |. 8BEC mov ebp, esp
    0155A073 |. 803D 04DDBE01>cmp byte ptr [1BEDD04], 0
    0155A07A |. 0F84 16010000 je 0155A196
    0155A080 |. 833D ACD7BE01>cmp dword ptr [1BED7AC], 0
    0155A087 |. 0F84 09010000 je 0155A196
    0155A08D |. 833D B4D7BE01>cmp dword ptr [1BED7B4], 0
    0155A094 |. 0F84 FC000000 je 0155A196
    0155A09A |. 833D 90D2BE01>cmp dword ptr [1BED290], 0
    0155A0A1 |. 0F85 EF000000 jnz 0155A196
    0155A0A7 |. 8B45 08 mov eax, dword ptr [ebp+8]
    0155A0AA |. 85C0 test eax, eax
    0155A0AC |. 0F84 0C010000 je 0155A1BE
    0155A0B2 |. 8038 00 cmp byte ptr [eax], 0
    0155A0B5 |. 0F84 03010000 je 0155A1BE
    0155A0BB |. 56 push esi
    0155A0BC |. 8B75 0C mov esi, dword ptr [ebp+C]
    0155A0BF |. 85F6 test esi, esi
    0155A0C1 |. 0F84 D1000000 je 0155A198
    0155A0C7 |. 803E 00 cmp byte ptr [esi], 0
    0155A0CA |. 0F84 C8000000 je 0155A198
    0155A0D0 |. 83C9 FF or ecx, FFFFFFFF
    0155A0D3 |. 890D 34E5A301 mov dword ptr [1A3E534], ecx
    0155A0D9 |. 890D 38E5A301 mov dword ptr [1A3E538], ecx
    0155A0DF |. 890D 3CE5A301 mov dword ptr [1A3E53C], ecx
    0155A0E5 |. 890D 40E5A301 mov dword ptr [1A3E540], ecx
    0155A0EB |. C605 D0D7BE01>mov byte ptr [1BED7D0], 0
    0155A0F2 |. C705 98D7BE01>mov dword ptr [1BED798], 0
    0155A0FC |. C705 90D2BE01>mov dword ptr [1BED290], 1
    0155A106 |. C705 F8D7BE01>mov dword ptr [1BED7F8], 0
    0155A110 |. 8A08 mov cl, byte ptr [eax]
    0155A112 |. BA 98D2BE01 mov edx, 01BED298 ; ASCII "WANG1111"
    0155A117 |. 84C9 test cl, cl
    0155A119 |. 74 25 je short 0155A140
    0155A11B |. EB 03 jmp short 0155A120
    0155A11D | 8D49 00 lea ecx, dword ptr [ecx]
    0155A120 |> 81FA 97D7BE01 /cmp edx, 01BED797
    0155A126 |. 73 18 |jnb short 0155A140
    0155A128 |. 80F9 7C |cmp cl, 7C
    0155A12B |. 75 06 |jnz short 0155A133
    0155A12D |. 3848 01 |cmp byte ptr [eax+1], cl
    0155A130 |. 75 01 |jnz short 0155A133
    0155A132 |. 40 |inc eax
    0155A133 |> 0FB608 |movzx ecx, byte ptr [eax]
    0155A136 |. 40 |inc eax
    0155A137 |. 880A |mov byte ptr [edx], cl
    0155A139 |. 8A08 |mov cl, byte ptr [eax]
    0155A13B |. 42 |inc edx
    0155A13C |. 84C9 |test cl, cl
    0155A13E |.^ 75 E0 \jnz short 0155A120
    0155A140 |> 68 98D2BE01 push 01BED298 ; ASCII "WANG1111"
    0155A145 |. C602 00 mov byte ptr [edx], 0
    0155A148 |. E8 EE352000 call 0175D73B
    0155A14D |. 68 B8838F01 push 018F83B8 ; ASCII "CANCEL"
    0155A152 |. 68 60848C01 push 018C8460 ; ASCII "%s"
    0155A157 |. 6A 03 push 3
    0155A159 |. E8 D2F70300 call 01599930
    0155A15E |. 0FB615 D1D7BE>movzx edx, byte ptr [1BED7D1]
    0155A165 |. 52 push edx
    0155A166 |. 56 push esi
    0155A167 |. 68 98D2BE01 push 01BED298 ; ASCII "WANG1111"
    0155A16C |. E8 3F4BCEFF call 0123ECB0
    0155A171 |. 8BC6 mov eax, esi
    0155A173 |. 83C4 1C add esp, 1C
    0155A176 |. 8D50 01 lea edx, dword ptr [eax+1]
    0155A179 |. 8DA424 000000>lea esp, dword ptr [esp]
    0155A180 |> 8A08 /mov cl, byte ptr [eax]
    0155A182 |. 40 |inc eax
    0155A183 |. 84C9 |test cl, cl
    0155A185 |.^ 75 F9 \jnz short 0155A180
    0155A187 |. 2BC2 sub eax, edx
    0155A189 |. 50 push eax
    0155A18A |. 6A 00 push 0
    0155A18C |. 56 push esi
    0155A18D |. E8 7E3FC2FF call 0117E110
    0155A192 |. 83C4 0C add esp, 0C
    0155A195 |. 5E pop esi
    0155A196 |> 5D pop ebp
    0155A197 |. C3 retn
    0155A198 |> 6A 00 push 0
    0155A19A |. 6A FF push -1
    0155A19C |. 68 9CE09001 push 0190E09C ; ASCII "LOGIN_ENTER_PASSWORD"
    0155A1A1 |. E8 4AD70300 call 015978F0
    0155A1A6 |. 50 push eax
    0155A1A7 |. 68 90DF9001 push 0190DF90 ; ASCII "OKAY"
    0155A1AC |. 68 CC4F8D01 push 018D4FCC ; ASCII "%s%s"
    0155A1B1 |. 6A 03 push 3
    0155A1B3 |. E8 78F70300 call 01599930
    0155A1B8 |. 83C4 1C add esp, 1C
    0155A1BB |. 5E pop esi
    0155A1BC |. 5D pop ebp
    0155A1BD |. C3 retn
    0155A1BE |> 6A 00 push 0
    0155A1C0 |. 6A FF push -1
    0155A1C2 |. 68 88E09001 push 0190E088 ; ASCII "LOGIN_ENTER_NAME"
    0155A1C7 |. E8 24D70300 call 015978F0
    0155A1CC |. 50 push eax
    0155A1CD |. 68 90DF9001 push 0190DF90 ; ASCII "OKAY"
    0155A1D2 |. 68 CC4F8D01 push 018D4FCC ; ASCII "%s%s"
    0155A1D7 |. 6A 03 push 3
    0155A1D9 |. E8 52F70300 call 01599930
    0155A1DE |. 83C4 1C add esp, 1C
    0155A1E1 |. 5D pop ebp
    0155A1E2 \. C3 retn
    0123ECB0  /$  55            push    ebp
    0123ECB1 |. 8BEC mov ebp, esp
    0123ECB3 |. 81EC 00050000 sub esp, 500
    0123ECB9 |. 803D 6005AF01>cmp byte ptr [1AF0560], 0
    0123ECC0 |. 74 27 je short 0123ECE9
    0123ECC2 |. 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123ECC8 |. 85C9 test ecx, ecx
    0123ECCA |. 74 16 je short 0123ECE2
    0123ECCC |. 8B01 mov eax, dword ptr [ecx]
    0123ECCE |. 8B90 D0000000 mov edx, dword ptr [eax+D0]
    0123ECD4 |. 6A 01 push 1
    0123ECD6 |. FFD2 call edx
    0123ECD8 |. C705 6405AF01>mov dword ptr [1AF0564], 0
    0123ECE2 |> C605 6005AF01>mov byte ptr [1AF0560], 0
    0123ECE9 |> 56 push esi
    0123ECEA |. 57 push edi
    0123ECEB |. 8B7D 08 mov edi, dword ptr [ebp+8]
    0123ECEE |. 6A 40 push 40
    0123ECF0 |. 57 push edi
    0123ECF1 |. 33F6 xor esi, esi
    0123ECF3 |. E8 B801F4FF call 0117EEB0
    0123ECF8 |. 83C4 08 add esp, 8
    0123ECFB |. 85C0 test eax, eax
    0123ECFD |. 74 05 je short 0123ED04
    0123ECFF |. BE 01000000 mov esi, 1
    0123ED04 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123ED0A |. 85C9 test ecx, ecx
    0123ED0C |. 74 56 je short 0123ED64
    0123ED0E |. 8B01 mov eax, dword ptr [ecx]
    0123ED10 |. 8B90 D8000000 mov edx, dword ptr [eax+D8]
    0123ED16 |. FFD2 call edx
    0123ED18 |. 83F8 01 cmp eax, 1
    0123ED1B |. 75 04 jnz short 0123ED21
    0123ED1D |. 85F6 test esi, esi
    0123ED1F |. 74 18 je short 0123ED39
    0123ED21 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123ED27 |. 8B01 mov eax, dword ptr [ecx]
    0123ED29 |. 8B90 D8000000 mov edx, dword ptr [eax+D8]
    0123ED2F |. FFD2 call edx
    0123ED31 |. 85C0 test eax, eax
    0123ED33 |. 75 26 jnz short 0123ED5B
    0123ED35 |. 85F6 test esi, esi
    0123ED37 |. 74 22 je short 0123ED5B
    0123ED39 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123ED3F |. 85C9 test ecx, ecx
    0123ED41 |. 74 0C je short 0123ED4F
    0123ED43 |. 8B01 mov eax, dword ptr [ecx]
    0123ED45 |. 8B90 D0000000 mov edx, dword ptr [eax+D0]
    0123ED4B |. 6A 01 push 1
    0123ED4D |. FFD2 call edx
    0123ED4F |> C705 6405AF01>mov dword ptr [1AF0564], 0
    0123ED59 |. EB 09 jmp short 0123ED64
    0123ED5B |> 833D 6405AF01>cmp dword ptr [1AF0564], 0
    0123ED62 |. 75 65 jnz short 0123EDC9
    0123ED64 |> 6A 00 push 0
    0123ED66 |. 85F6 test esi, esi
    0123ED68 |. 74 21 je short 0123ED8B
    0123ED6A |. 68 7C030000 push 37C
    0123ED6F |. 68 D83A8E01 push 018E3AD8 ; ASCII ".\ClientServices.cpp"
    0123ED74 |. 68 28120000 push 1228
    0123ED79 |. E8 621CFEFF call 012209E0
    0123ED7E |. 85C0 test eax, eax
    0123ED80 |. 74 2A je short 0123EDAC
    0123ED82 |. 8BC8 mov ecx, eax
    0123ED84 |. E8 17051500 call 0138F2A0
    0123ED89 |. EB 23 jmp short 0123EDAE
    0123ED8B |> 68 7E030000 push 37E
    0123ED90 |. 68 D83A8E01 push 018E3AD8 ; ASCII ".\ClientServices.cpp"
    0123ED95 |. 68 90110000 push 1190
    0123ED9A |. E8 411CFEFF call 012209E0
    0123ED9F |. 85C0 test eax, eax
    0123EDA1 |. 74 09 je short 0123EDAC
    0123EDA3 |. 8BC8 mov ecx, eax
    0123EDA5 |. E8 66C01400 call 0138AE10
    0123EDAA |. EB 02 jmp short 0123EDAE
    0123EDAC |> 33C0 xor eax, eax
    0123EDAE |> A3 6405AF01 mov dword ptr [1AF0564], eax
    0123EDB3 |. 8B30 mov esi, dword ptr [eax]
    0123EDB5 |. E8 A6FEFFFF call 0123EC60
    0123EDBA |. 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EDC0 |. 50 push eax
    0123EDC1 |. 8B86 CC000000 mov eax, dword ptr [esi+CC]
    0123EDC7 |. FFD0 call eax
    0123EDC9 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EDCF |. 57 push edi
    0123EDD0 |. E8 2B3AFFFF call 01232800
    0123EDD5 |. 8B0D 8405AF01 mov ecx, dword ptr [1AF0584]
    0123EDDB |. 8379 30 00 cmp dword ptr [ecx+30], 0
    0123EDDF |. 74 75 je short 0123EE56
    0123EDE1 |. A1 8897AA01 mov eax, dword ptr [1AA9788]
    0123EDE6 |. 83F8 08 cmp eax, 8 ; Switch (cases 0..8)
    0123EDE9 |. 0F87 81000000 ja 0123EE70
    0123EDEF |. FF2485 F8EE23>jmp dword ptr [eax*4+123EEF8]
    0123EDF6 |> 833D A0CDA601>cmp dword ptr [1A6CDA0], 3 ; Cases 0,7 of switch 0123EDE6
    0123EDFD |. 57 push edi
    0123EDFE |. 75 13 jnz short 0123EE13
    0123EE00 |. 68 283D8E01 push 018E3D28 ; ASCII "%s#EU"
    0123EE05 |. 68 00050000 push 500
    0123EE0A |. 8D95 00FBFFFF lea edx, dword ptr [ebp-500]
    0123EE10 |. 52 push edx
    0123EE11 |. EB 55 jmp short 0123EE68
    0123EE13 |> 68 203D8E01 push 018E3D20 ; ASCII "%s#US"
    0123EE18 |. 68 00050000 push 500
    0123EE1D |. 8D85 00FBFFFF lea eax, dword ptr [ebp-500]
    0123EE23 |. 50 push eax
    0123EE24 |. EB 42 jmp short 0123EE68
    0123EE26 |> 57 push edi ; Cases 2,3,6,8 of switch 0123EDE6
    0123EE27 |. 68 283D8E01 push 018E3D28 ; ASCII "%s#EU"
    0123EE2C |. EB 2E jmp short 0123EE5C
    0123EE2E |> 57 push edi ; Case 1 of switch 0123EDE6
    0123EE2F |. 68 183D8E01 push 018E3D18 ; ASCII "%s#KR"
    0123EE34 |. 68 00050000 push 500
    0123EE39 |. 8D95 00FBFFFF lea edx, dword ptr [ebp-500]
    0123EE3F |. 52 push edx
    0123EE40 |. EB 26 jmp short 0123EE68
    0123EE42 |> 57 push edi ; Cases 4,5 of switch 0123EDE6
    0123EE43 |. 68 103D8E01 push 018E3D10 ; ASCII "%s#CN"
    0123EE48 |. 68 00050000 push 500
    0123EE4D |. 8D85 00FBFFFF lea eax, dword ptr [ebp-500]
    0123EE53 |. 50 push eax
    0123EE54 |. EB 12 jmp short 0123EE68
    0123EE56 |> 57 push edi
    0123EE57 |. 68 60848C01 push 018C8460 ; ASCII "%s"
    0123EE5C |> 68 00050000 push 500
    0123EE61 |. 8D8D 00FBFFFF lea ecx, dword ptr [ebp-500]
    0123EE67 |. 51 push ecx
    0123EE68 |> E8 8324FEFF call 012212F0
    0123EE6D |. 83C4 10 add esp, 10
    0123EE70 |> 8B55 0C mov edx, dword ptr [ebp+C] ; Default case of switch 0123EDE6
    0123EE73 |. 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EE79 |. 52 push edx
    0123EE7A |. 8D85 00FBFFFF lea eax, dword ptr [ebp-500]
    0123EE80 |. 50 push eax
    0123EE81 |. E8 EA38FFFF call 01232770
    0123EE86 |. 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EE8C |. 8A55 10 mov dl, byte ptr [ebp+10]
    0123EE8F |. 8891 E7100000 mov byte ptr [ecx+10E7], dl
    0123EE95 |. 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EE9B |. 8B01 mov eax, dword ptr [ecx]
    0123EE9D |. 8B90 D8000000 mov edx, dword ptr [eax+D8]
    0123EEA3 |. FFD2 call edx
    0123EEA5 |. 83F8 01 cmp eax, 1
    0123EEA8 |. 75 0A jnz short 0123EEB4
    0123EEAA |. A1 7405AF01 mov eax, dword ptr [1AF0574]
    0123EEAF |. 8B70 28 mov esi, dword ptr [eax+28]
    0123EEB2 |. EB 05 jmp short 0123EEB9
    0123EEB4 |> BE 5F9E8C01 mov esi, 018C9E5F
    0123EEB9 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EEBF |. 8B11 mov edx, dword ptr [ecx]
    0123EEC1 |. 8B82 D8000000 mov eax, dword ptr [edx+D8]
    0123EEC7 |. FFD0 call eax
    0123EEC9 |. 83F8 01 cmp eax, 1
    0123EECC |. 75 0B jnz short 0123EED9
    0123EECE |. 8B0D 7005AF01 mov ecx, dword ptr [1AF0570]
    0123EED4 |. 8B41 28 mov eax, dword ptr [ecx+28]
    0123EED7 |. EB 09 jmp short 0123EEE2
    0123EED9 |> 8B15 7805AF01 mov edx, dword ptr [1AF0578]
    0123EEDF |. 8B42 28 mov eax, dword ptr [edx+28]
    0123EEE2 |> 8B0D 6405AF01 mov ecx, dword ptr [1AF0564]
    0123EEE8 |. 8B11 mov edx, dword ptr [ecx]
    0123EEEA |. 56 push esi
    0123EEEB |. 50 push eax
    0123EEEC |. 8B42 5C mov eax, dword ptr [edx+5C]
    0123EEEF |. FFD0 call eax
    0123EEF1 |. 5F pop edi
    0123EEF2 |. 5E pop esi
    0123EEF3 |. 8BE5 mov esp, ebp
    0123EEF5 |. 5D pop ebp
    0123EEF6 \. C3 retn

    几处函数的入口均能看到账号和密码的明文,至于木马是利用特征定位后直接读取变量的内容还是做了hook跳转后截取,都是可以获取的。

    这里只是揭示下它使用的技术原理,大家可以自行挖掘。

    最后忘了说下,这个木马已经不能成功盗号了,魔兽世界能检测到此木马的,运行魔兽世界后要么crash,要么给出提示说感染了某某盗号木马,还一直有语音提示:

    警报警报……

    下面说下魔兽世界:

    第一次接触魔兽是大学里头的室友在玩,很是入迷,整天都能听到“我离得太远了”、“我需要靠近一些”的声音。觉得这一定是当时一款目前比较好玩的游戏。

    能让他们不上课不睡觉的玩。

    现在下载下来体验,有几十个GB的大小,实在是太庞大了。不过画面我不喜欢,感觉太粗糙了,至少我不会去玩,我对画面的要求太高了。不过最新的CG做得不错。

    wow主程序没有加壳,可以直接分析,反调试也不强,我等小菜鸟都可以分析。里面的账号密码啥的都是明文存在,对于盗号者来说太简单了。

    但是它是成功的,与其做那么多的工作在安全上面,倒不如多花点心思在如何做好游戏上面。这一点国人是无法相比的,国产游戏与日俱增,做得那是啥啊一个比一个垃圾,

    就看谁会炒作。虽然我不玩魔兽,但是我知道它为啥能吸引人,我挺你!





  • 相关阅读:
    HDU-2262 Where is the canteen 概率DP,高斯消元
    HDU-4418 Time travel 概率DP,高斯消元
    无人驾驶相关数据集
    C++——编译器运行过程
    C++——Struct 和 Union区别
    常用linux指令
    无人驾驶——定位
    Ubuntu 没有 无线网 RTL8821ce 8111 8186
    无人驾驶之传感器融合算法
    LIN通讯
  • 原文地址:https://www.cnblogs.com/daxingxing/p/2284768.html
Copyright © 2011-2022 走看看