本人再看一破文时作者不知怎么回事,壳都没脱就直接教我们用 FIND字符参考,害得我几天都没搞定,现附上本人的脱
壳过程,第一次写破文可能有不合理的地方
破解目标:colorpicker V2.06
http://www.ucansoft.com/
破解工具:ollydbg1.10(包括老罗的ULtra str ref) winxp
磨刀不误砍柴工,我们先分析一下这个软件:
1,采用名字加注册码的保护方式。
2,加了壳但目前还不清楚,应该是ASPACK。它多次调用了
GetModuleHandleA
GetProcAddress
VirtualAlloc
kernel32.VirtualFree
3,输入错误的注册码后,有提示窗口出现。
在得到了这些信息后,我们就成功了50%了。
说不如做,我们正式开始破解。先手工脱壳(本人一直不知道Fi.exe怎么用,我把它click后,一闪就没了,查入口的东
东也没用过,没办法只好先学手工了,呵呵__!)
打开之后这这样子的
004C9001 > 60 PUSHAD
004C9002 E9 3D040000 JMP colorpic.004C9444 ; 按F7,跳走
004C9007 - 79 B5 JNS SHORT colorpic.004C8FBE
004C9009 95 XCHG EAX,EBP
004C900A 91 XCHG EAX,ECX
004C900B 91 XCHG EAX,ECX
004C900C 7A 91 JPE SHORT colorpic.004C8F9F
004C900E 2AA1 A8D59192 SUB AH,BYTE PTR DS:[ECX+9291D5A8]
004C9014 4C DEC ESP
004C9015 BA 0C41AED5 MOV EDX,D5AE410C
004C901A 91 XCHG EAX,ECX
*************************跳到了这一行***********************************************
004C9444 /E9 1C000000 JMP colorpic.004C9465 ;按F7,跳走
004C9449 |39FA CMP EDX,EDI
004C944B |F2: PREFIX REPNE: ; 多余的前缀
004C944C |7B DF JPO SHORT colorpic.004C942D
004C944E |4C DEC ESP
004C944F |98 CWDE
004C9450 |49 DEC ECX
*************************跳到了这一行***********************************************
004C9465 /E9 14000000 JMP colorpic.004C947E ; F7跳
004C946A |8F ??? ; 未知命令
004C946B |4B DEC EBX
004C946C |181A SBB BYTE PTR DS:[EDX],BL
004C946E |71 75 JNO SHORT colorpic.004C94E5
004C9470 |50 PUSH EAX
004C9471 |8E03 MOV ES,WORD PTR DS:[EBX] ; 修正的段位寄存器
004C9473 |05 ECD2F9A4 ADD EAX,A4F9D2EC
004C9478 ^|EB F2 JMP SHORT colorpic.004C946C
004C947A |47 INC EDI
004C947B |9C PUSHFD
004C947C |33FE XOR EDI,ESI
004C947E \E8 1C000000 CALL colorpic.004C949F ; F7跳
004C9483 D927 FLDENV (28-BYTE) PTR DS:[EDI]
004C9485 F1 INT1
004C9486 A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
004C9487 3F AAS
004C9488 65:8189 311A9D1>OR DWORD PTR GS:[ECX+169D1A31],A2703DA3
004C9493 29FA SUB EDX,EDI
004C9495 CE INTO
004C9496 42 INC EDX
004C9497 67:817D CC 0104>CMP DWORD PTR DS:[DI+FFCC],835F0401
004C949F 5D POP EBP ;到了这里
004C94A0 B3 2A MOV BL,2A
004C94A2 0FBFFF MOVSX EDI,DI
004C94A5 55 PUSH EBP
004C94A6 0FBFFD MOVSX EDI,BP
004C94A9 E9 14000000 JMP colorpic.004C94C2 ; F7跳
004C94AE 43 INC EBX
004C94AF 21DE AND ESI,EBX
004C94B1 EA 9954E184 875>JMP FAR 5287:84E15499
004C94B8 4E DEC ESI
004C94B9 C8 E18768 ENTER 87E1,68
004C94BD 8793 329E6859 XCHG DWORD PTR DS:[EBX+59689E32],EDX
*************************跳到了这一行***********************************************
004C94C2 59 POP ECX ; colorpic.004C9483
004C94C3 BD 33721671 MOV EBP,71167233
004C94C8 E9 14000000 JMP colorpic.004C94E1 ;F7跳
004C94CD 334F 3F XOR ECX,DWORD PTR DS:[EDI+3F]
004C94D0 44 INC ESP
004C94D1 59 POP ECX
004C94D2 3123 XOR DWORD PTR DS:[EBX],ESP
004C94D4 36:3F AAS
*****************************************************************************8
004C94E1 /E9 1C000000 JMP colorpic.004C9502 ; F7跳
004C94E6 |0177 0D ADD DWORD PTR DS:[EDI+D],ESI
004C94E9 |E4 93 IN AL,93 ; I/O 命令
004C94EB |48 DEC EAX
004C94EC |E2 26 LOOPD SHORT colorpic.004C9514
004C94EE |A9 B30CE3CF TEST EAX,CFE30CB3
004C94F3 |CE INTO
004C94F4 |BA 801144CC MOV EDX,CC441180
004C94F9 |A5 MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ES>
004C94FA |C3 RETN
004C94FB |47 INC EDI
到004C9502 后慢慢按几下F7,到了
004C9510 /E9 14000000 JMP colorpic.004C9529 按F7
004C9515 |F3: PREFIX REP: ; 多余的前缀
004C9516 |13A7 19A98B07 ADC ESP,DWORD PTR DS:[EDI+78BA919]
004C951C |2F DAS
004C951D |0FEBEC POR MM5,MM4
004C9520 |46 INC ESI
004C9521 |B1 63 MOV CL,63
004C9523 -|E9 5B8396E3 JMP E3E31883
004C9528 |F5 CMC
004C9529 \81C7 F1CB2B56 ADD EDI,562BCBF1
004C952F 0FBFF1 MOVSX ESI,CX
004C9532 BB 9139614D MOV EBX,4D613991
004C9537 66:8BF1 MOV SI,CX
004C953A 0FBFDF MOVSX EBX,DI
004C953D E9 1C000000 JMP colorpic.004C955E 按F7
004C9542 41 INC ECX
004C9543 24 94 AND AL,94
*************************************************************************8
004C955E 0FBFF7 MOVSX ESI,DI
004C9561 80B1 31202FA5 9>XOR BYTE PTR DS:[ECX+A52F2031],91
004C9568 81E9 01000000 SUB ECX,1
004C956E 81E3 43CA0D9F AND EBX,9F0DCA43
004C9574 42 INC EDX
004C9575 8BFA MOV EDI,EDX
004C9577 BD A9D440F3 MOV EBP,F340D4A9
004C957C 66:8BDD MOV BX,BP
004C957F E9 1C000000 JMP colorpic.004C95A0 按F7
004C9584 A1 80BBEAF3 MOV EAX,DWORD PTR DS:[F3EABB80]
004C9589 CA 2915 RETF 1529
004C958C D969 2E FLDCW WORD PTR DS:[ECX+2E]
004C958F 53 PUSH EBX
004C9590 7F 4C JG SHORT colorpic.004C95DE
004C9592 C566 71 LDS ESP,FWORD PTR DS:[ESI+71]
004C9595 AC LODS BYTE PTR DS:[ESI]
004C9596 DA7E E3 FIDIVR DWORD PTR DS:[ESI-1D]
004C9599 66:D6 SALC
004C959B 2869 E4 SUB BYTE PTR DS:[ECX-1C],CH
004C959E 47 INC EDI
004C959F 49 DEC ECX
004C95A0 81FF 40B8526C CMP EDI,6C52B840
004C95A6 ^ 0F85 8EFFFFFF JNZ colorpic.004C953A ;跳出这个LOOP
004C95AC ^ E9 8AFEFFFF JMP colorpic.004C943B ;这里下断点,并运行到这里 按 F2 F4 F2 F7跳进
004C95B1 4F DEC EDI ;如果到这里BP,然后运行到此,就会跑飞
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
004C943B ^\E9 C7FBFFFF JMP colorpic.004C9007 F7进入
004C9440 0000 ADD BYTE PTR DS:[EAX],AL
004C9442 0000 ADD BYTE PTR DS:[EAX],AL
004C9444 E9 1C000000 JMP colorpic.004C9465
004C9449 39FA CMP EDX,EDI
004C944B F2: PREFIX REPNE: ; 多余的前缀
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
004C9007 E8 24040000 CALL colorpic.004C9430 F7进入
004C900C EB 00 JMP SHORT colorpic.004C900E
004C900E BB 30394400 MOV EBX,colorpic.00443930
004C9013 03DD ADD EBX,EBP
004C9015 2B9D D03F4400 SUB EBX,DWORD PTR SS:[EBP+443FD0]
004C901B 83BD FC494400 0>CMP DWORD PTR SS:[EBP+4449FC],0
004C9022 899D FC494400 MOV DWORD PTR SS:[EBP+4449FC],EBX
004C9028 0F85 66030000 JNZ colorpic.004C9394 F8过
004C902E C785 33394400 0>MOV DWORD PTR SS:[EBP+443933],0
004C9038 8D85 044A4400 LEA EAX,DWORD PTR SS:[EBP+444A04]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
004C9085 8B9D D83F4400 MOV EBX,DWORD PTR SS:[EBP+443FD8]
004C908B 0BDB OR EBX,EBX
004C908D 74 0A JE SHORT colorpic.004C9099
004C908F 8B03 MOV EAX,DWORD PTR DS:[EBX]
004C9091 8785 DC3F4400 XCHG DWORD PTR SS:[EBP+443FDC],EAX
004C9097 8903 MOV DWORD PTR DS:[EBX],EAX
004C9099 8DB5 19404400 LEA ESI,DWORD PTR SS:[EBP+444019]
004C909F 833E 00 CMP DWORD PTR DS:[ESI],0
004C90A2 0F84 1F010000 JE colorpic.004C91C7
004C90A8 8DB5 19404400 LEA ESI,DWORD PTR SS:[EBP+444019]
004C90AE 6A 04 PUSH 4
004C90B0 68 00100000 PUSH 1000
004C90B5 68 00180000 PUSH 1800
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
004C92B0 8B95 FC494400 MOV EDX,DWORD PTR SS:[EBP+4449FC]
004C92B6 8B06 MOV EAX,DWORD PTR DS:[ESI]
004C92B8 85C0 TEST EAX,EAX
004C92BA 75 03 JNZ SHORT colorpic.004C92BF
004C92BC 8B46 10 MOV EAX,DWORD PTR DS:[ESI+10]
004C92BF 03C2 ADD EAX,EDX
004C92C1 0385 F03F4400 ADD EAX,DWORD PTR SS:[EBP+443FF0]
004C92C7 8B18 MOV EBX,DWORD PTR DS:[EAX]
004C92C9 8B7E 10 MOV EDI,DWORD PTR DS:[ESI+10]
004C92CC 03FA ADD EDI,EDX
004C92CE 03BD F03F4400 ADD EDI,DWORD PTR SS:[EBP+443FF0]
004C92D4 85DB TEST EBX,EBX
004C92D6 0F84 A2000000 JE colorpic.004C937E
004C92DC F7C3 00000080 TEST EBX,80000000
004C92E2 75 04 JNZ SHORT colorpic.004C92E8
004C92E4 03DA ADD EBX,EDX
004C92E6 43 INC EBX
004C92E7 43 INC EBX
004C92E8 53 PUSH EBX
004C92E9 81E3 FFFFFF7F AND EBX,7FFFFFFF
004C92EF 53 PUSH EBX
004C92F0 FFB5 EC3F4400 PUSH DWORD PTR SS:[EBP+443FEC]
004C92F6 FF95 FC4A4400 CALL DWORD PTR SS:[EBP+444AFC]
004C92FC 85C0 TEST EAX,EAX
004C92FE 5B POP EBX
004C92FF 75 6F JNZ SHORT colorpic.004C9370
004C9301 F7C3 00000080 TEST EBX,80000000
004C9307 75 19 JNZ SHORT colorpic.004C9322
004C9309 57 PUSH EDI
004C930A 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C]
004C930D 0385 FC494400 ADD EAX,DWORD PTR SS:[EBP+4449FC]
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
004C9370 8907 MOV DWORD PTR DS:[EDI],EAX
004C9372 8385 F03F4400 0>ADD DWORD PTR SS:[EBP+443FF0],4
004C9379 ^ E9 32FFFFFF JMP colorpic.004C92B0
004C937E 8906 MOV DWORD PTR DS:[ESI],EAX
004C9380 8946 0C MOV DWORD PTR DS:[ESI+C],EAX
004C9383 8946 10 MOV DWORD PTR DS:[ESI+10],EAX
004C9386 83C6 14 ADD ESI,14
004C9389 8B95 FC494400 MOV EDX,DWORD PTR SS:[EBP+4449FC]
004C938F ^ E9 EBFEFFFF JMP colorpic.004C927F
004C9394 8B85 AD394400 MOV EAX,DWORD PTR SS:[EBP+4439AD]
004C939A 50 PUSH EAX
004C939B 0385 FC494400 ADD EAX,DWORD PTR SS:[EBP+4449FC]
004C93A1 59 POP ECX
004C93A2 0BC9 OR ECX,ECX
004C93A4 8985 E63C4400 MOV DWORD PTR SS:[EBP+443CE6],EAX
004C93AA 61 POPAD ;看到没有,就是这里了
004C93AB 75 08 JNZ SHORT colorpic.004C93B5
004C93AD B8 01000000 MOV EAX,1
004C93B2 C2 0C00 RETN 0C
004C93B5 68 2C2A4A00 PUSH colorpic.004A2A2C
004C93BA C3 RETN 按 F8
***************************************************
004A2A2C 55 DB 55 入口 然后用脱?插件
004A2A2D 8B DB 8B
004A2A2E EC DB EC
004A2A2F 83 DB 83
004A2A30 C4 DB C4
004A2A31 F0 DB F0
004A2A32 B8 DB B8
004A2A33 B4 DB B4
004A2A34 27 DB 27 ; CHAR '''
004A2A35 4A DB 4A ; CHAR 'J'
004A2A36 00 DB 00
004A2A37 E8 DB E8
004A2A38 98 DB 98
004A2A39 3E DB 3E ; CHAR '>'
004A2A3A F6 DB F6
004A2A3B FF DB FF
004A2A3C A1 DB A1
004A2A3D 18 DB 18
004A2A3E 5D DB 5D ; CHAR ']'
004A2A3F 4A DB 4A ; CHAR 'J'
004A2A40 00 DB 00
********************************************************************************
总结:脱壳时一般只能往下跳(用F8),一但用F8跳飞了重新开始再从跳飞的CALL上进去(用F7),虽然我看的
教程上提倡多用F7,但具体问题具体分析注意后面的注解栏,有些是系统的API就不用进去了,有LOOP时就到LOOP的下一
句依次用F2 ,F4 ,F2 (等等 哇美眉们都过来看嘛,期待已久F4终于出场了)
总之地址突然变化很大的时候就是对的了,但也要注意上面是从哪里跳过来的,别要跳到API中去了
我在写这篇破文的时候一个不小把API“脱壳”了,把脱后的EXE打开后才发现地址都到了77??????了,代码和上面的差不
多全是一列 DB ??,初学者要注意这点了
004C938F ^ E9 EBFEFFFF JMP colorpic.004C927F
004C9394 8B85 AD394400 MOV EAX,DWORD PTR SS:[EBP+4439AD]
004C939A 50 PUSH EAX
004C939B 0385 FC494400 ADD EAX,DWORD PTR SS:[EBP+4449FC]
004C93A1 59 POP ECX
004C93A2 0BC9 OR ECX,ECX
004C93A4 8985 E63C4400 MOV DWORD PTR SS:[EBP+443CE6],EAX
004C93AA 61 POPAD ;看到没有,就是这里了,这个标志很重要
004C93AB 75 08 JNZ SHORT colorpic.004C93B5
004C93AD B8 01000000 MOV EAX,1
004C93B2 C2 0C00 RETN 0C
004C93B5 68 2C2A4A00 PUSH colorpic.004A2A2C
004C93BA C3 RETN 按 F8
以上几行很重要,多看看它们的长相,(有美眉在看吗,发表个意见嘛 他们长得帅不帅)
脱壳后重载,代码如下
004A2A2C > $ 55 PUSH EBP
004A2A2D . 8BEC MOV EBP,ESP
004A2A2F . 83C4 F0 ADD ESP,-10
004A2A32 . B8 B4274A00 MOV EAX,11.004A27B4
004A2A37 . E8 983EF6FF CALL 11.004068D4
004A2A3C . A1 185D4A00 MOV EAX,DWORD PTR DS:[4A5D18]
004A2A41 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004A2A43 . E8 0C37FBFF CALL 11.00456154
004A2A48 . A1 185D4A00 MOV EAX,DWORD PTR DS:[4A5D18]
004A2A4D . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004A2A4F . BA A42A4A00 MOV EDX,11.004A2AA4 ; ASCII "ColorPicker v2.0.5"
004A2A54 . E8 1F33FBFF CALL 11.00455D78
004A2A59 . 8B0D 005E4A00 MOV ECX,DWORD PTR DS:[4A5E00] ; 11.004A6DC8
004A2A5F . A1 185D4A00 MOV EAX,DWORD PTR DS:[4A5D18]
004A2A64 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004A2A66 . 8B15 94094A00 MOV EDX,DWORD PTR DS:[4A0994] ; 11.004A09E0
004A2A6C . E8 FB36FBFF CALL 11.0045616C
004A2A71 . 8B0D 0C5E4A00 MOV ECX,DWORD PTR DS:[4A5E0C] ; 11.004A6DC0
004A2A77 . A1 185D4A00 MOV EAX,DWORD PTR DS:[4A5D18]
004A2A7C . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004A2A7E . 8B15 94FD4900 MOV EDX,DWORD PTR DS:[49FD94] ; 11.0049FDE0
是不是整齐多了 这之后用F9运行,填注册码注册 99.99999999999999%会弹出
"The Registration information is invalid !
Please recheck your information."
(什么?有人收到的是 "Register successfully."我靠,算你狠!你也不用看我了,认你当老大还不行吗)
接下来就可用 FIND字符参考 了
004A0481 . 6A 00 PUSH 0 ; /Arg1 = 00000000
004A0483 . 66:8B0D 60054>MOV CX,WORD PTR DS:[4A0560] ; |
004A048A . B2 02 MOV DL,2 ; |
004A048C . B8 6C054A00 MOV EAX,11.004A056C ; |ASCII "Register successfully."
004A0491 . E8 E2FBF8FF CALL 11.00430078 ; \11.00430078
004A0496 . C3 RETN
004A0497 .^ E9 AC39F6FF JMP 11.00403E48
004A049C .^ EB 9B JMP SHORT 11.004A0439
004A049E > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A04A1 . 8B80 18030000 MOV EAX,DWORD PTR DS:[EAX+318]
004A04A7 . 33D2 XOR EDX,EDX
004A04A9 . E8 1661F9FF CALL 11.004365C4
004A04AE . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A04B1 . 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
004A04B7 . 33D2 XOR EDX,EDX
004A04B9 . E8 0661F9FF CALL 11.004365C4
004A04BE . 6A 00 PUSH 0 ,《----跳到这里就出错了 ; /Arg1 = 00000000
004A04C0 . 66:8B0D 60054>MOV CX,WORD PTR DS:[4A0560] ; |
004A04C7 . B2 02 MOV DL,2 ; |
004A04C9 . B8 8C054A00 MOV EAX,11.004A058C ; |ASCII "The Registration
information is invalid !
Please recheck your information."
004A04CE . E8 A5FBF8FF CALL 11.00430078 ; \11.00430078
004A04D3 > 33C0 XOR EAX,EAX
004A04D5 . 5A POP EDX
004A04D6 . 59 POP ECX
004A04D7 . 59 POP ECX
向上找了一下,发现居然没有直接跳到004A04BE或004A0481的语句,(你以为你躲起来我就找不到你了吗?没有用的,你
是那样拉风的男人)没有就只能找一个跳到最接近这几行的跳转了
004A02F9 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 这里试试下断点 ,然
后注册,可能被拦下
004A02FC . 8B80 18030000 MOV EAX,DWORD PTR DS:[EAX+318] 之后用F8走到可疑CALL上,还没有走到
那个可疑CALL上,就在寄存器窗口中看到了自已输的错
004A0302 . E8 8D62F9FF CALL 11.00436594 注册码和正确的注册码
004A0307 . 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
004A030A . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004A030D . E8 B685F6FF CALL 11.004088C8
004A0312 . 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
004A0315 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A0318 . 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
004A031E . E8 7162F9FF CALL 11.00436594
004A0323 . 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004A0326 . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004A0329 . E8 9A85F6FF CALL 11.004088C8
004A032E . 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
004A0332 . 0F84 9B010000 JE 11.004A04D3
004A0338 . 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
004A033B . 50 PUSH EAX
004A033C . 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004A033F . BA 2E391E00 MOV EDX,1E392E
004A0344 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A0347 . E8 8C020000 CALL 11.004A05D8
004A034C . 8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]
004A034F . 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004A0352 . E8 6945F6FF CALL 11.004048C0
004A0357 . 0F85 41010000 JNZ 11.004A049E 没办法只有这个跳最接近004A04BE了
004A035D . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
004A0360 . 33C0 XOR EAX,EAX
004A0362 . E8 A926F6FF CALL 11.00402A10
004A0367 . 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
004A036A . 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]
来到以下地方
004A04A7 . 33D2 XOR EDX,EDX
004A04A9 . E8 1661F9FF CALL 11.004365C4 可疑CALL
004A04AE . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004A04B1 . 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
004A04B7 . 33D2 XOR EDX,EDX
004A04B9 . E8 0661F9FF CALL 11.004365C4 看样子这两个CALL很可疑
再此我说明一下,最后的那个下断的地方不是决对的,但大致地方不会错,因我的XP没装还原精灵一类的东西,写之前没
用系统还原
就不能再次注册了 所以最后一步可能会跑飞。(台下突然起哄了)
最后我愿通过此贴认识一些像我这样的初级CRACKER,QQ:35523153
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课