首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
付费问答
发新帖
0
0
[旧帖]
[原创]佳宜车辆信息管理软件 v1.10(企业版) 算法分析
0.00雪花
发表于: 2008-5-23 08:02
4289
[旧帖]
[原创]佳宜车辆信息管理软件 v1.10(企业版) 算法分析
0.00雪花
wiliy
2008-5-23 08:02
4289
【文章标题】: 佳宜车辆信息管理软件 v1.10(企业版) 算法分析
【文章作者】: wiliy
【作者邮箱】: ninghuan1984@163.com
【作者主页】: ninghuan1984.blog.163.com
【作者QQ号】: 253181924
【软件名称】: 佳宜车辆信息管理软件 v1.10(企业版)
【下载地址】: http://www.jyitsoft.com/
【加壳方式】: 无壳
【保护方式】: 序列号
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD PEiD
【操作平台】: WinXP
【软件介绍】: 佳宜车辆信息管理软件...
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
因为时间关系,偶只是简单做个分析,适合小鸟学习,大鸟飞过。如有雷同,纯属巧合!
运行软件,输入试验码 “ 用户名: wiliy, 授权编号: 0123456789ABCD ”,注册后,提示“系统注册失败,请检查注册是否有误!”
OK! 开始干苦力了!
PEiD查壳,无壳!呵呵,省事了。OD 载入,停在:
0068F96C > $ 55 push ebp //停在这里
0068F96D . 8BEC mov ebp, esp
0068F96F . 83C4 F0 add esp, -10
0068F972 . 53 push ebx
0068F973 . B8 ECEF6800 mov eax, 0068EFEC
0068F978 . E8 7778D7FF call 004071F4
0068F97D . 8B1D 2C566900 mov ebx, dword ptr [69562C] ; JyCARman.006987EC
0068F983 . A1 24556900 mov eax, dword ptr [695524]
0068F988 . 8B00 mov eax, dword ptr [eax]
0068F98A . E8 4912DEFF call 00470BD8
0068F98F . 33C9 xor ecx, ecx
...
Ultra String Reference 分析后(亦可下函数API断点 BP MessagBoxA,偶比较懒嘛,所以...),查找字符串“系统注册失败,请检查注册是否有误!”,双击来到:
0061151A . 8B45 FC mov eax, dword ptr [ebp-4]
0061151D . E8 8ABFE5FF call 0046D4AC
00611522 . E8 0130DFFF call 00404528
00611527 . EB 0C jmp short 00611535
00611529 > 6A 03 push 3
0061152B . 68 38166100 push 00611638 ; 系统注册失败,请检查注册是否有误!
00611530 . E8 7B0CFEFF call <jmp.&PunUnitLib.ShowMess>
00611535 > 33C0 xor eax, eax
00611537 . 5A pop edx
00611538 . 59 pop ecx
00611539 . 59 pop ecx
...
此时,OD向上翻屏,来到这里并下断:
0061132F . 8945 FC mov dword ptr [ebp-4], eax
00611332 . 33C0 xor eax, eax
00611334 . 55 push ebp //F2 下断
00611335 . 68 9A156100 push 0061159A
0061133A . 64:FF30 push dword ptr fs:[eax]
0061133D . 64:8920 mov dword ptr fs:[eax], esp
00611340 . 8D55 F0 lea edx, dword ptr [ebp-10]
00611343 . 8B45 FC mov eax, dword ptr [ebp-4]
00611346 . 8B80 04030000 mov eax, dword ptr [eax+304]
0061134C . E8 0FDEE3FF call 0044F160
00611351 . 8B45 F0 mov eax, dword ptr [ebp-10]
00611354 . 8D55 F4 lea edx, dword ptr [ebp-C]
00611357 . E8 9083DFFF call 004096EC
0061135C . 837D F4 00 cmp dword ptr [ebp-C], 0
00611360 . 75 22 jnz short 00611384
00611362 . 6A 00 push 0
00611364 . 68 A8156100 push 006115A8 ; 请填写用户名称!
00611369 . E8 420EFEFF call <jmp.&PunUnitLib.ShowMess>
0061136E . 8B45 FC mov eax, dword ptr [ebp-4]
00611371 . 8B80 04030000 mov eax, dword ptr [eax+304]
00611377 . 8B10 mov edx, dword ptr [eax]
00611379 . FF92 C0000000 call dword ptr [edx+C0]
...
Ctrl+F2 重载,F9 运行,输入试验码 “ 用户名: wiliy, 授权编号: 0123456789ABCD ”,点击注册按钮,被 OD 断下
00611334 . 55 push ebp //断在此处
00611335 . 68 9A156100 push 0061159A
0061133A . 64:FF30 push dword ptr fs:[eax]
0061133D . 64:8920 mov dword ptr fs:[eax], esp
00611340 . 8D55 F0 lea edx, dword ptr [ebp-10]
00611343 . 8B45 FC mov eax, dword ptr [ebp-4]
00611346 . 8B80 04030000 mov eax, dword ptr [eax+304]
0061134C . E8 0FDEE3FF call 0044F160 ; // 取用户名
00611351 . 8B45 F0 mov eax, dword ptr [ebp-10]
00611354 . 8D55 F4 lea edx, dword ptr [ebp-C]
00611357 . E8 9083DFFF call 004096EC
0061135C . 837D F4 00 cmp dword ptr [ebp-C], 0 ; //判断用户名是否为空
00611360 . 75 22 jnz short 00611384 ; //不空则跳
00611362 . 6A 00 push 0
00611364 . 68 A8156100 push 006115A8 ; 请填写用户名称!
00611369 . E8 420EFEFF call <jmp.&PunUnitLib.ShowMess>
0061136E . 8B45 FC mov eax, dword ptr [ebp-4]
00611371 . 8B80 04030000 mov eax, dword ptr [eax+304]
00611377 . 8B10 mov edx, dword ptr [eax]
00611379 . FF92 C0000000 call dword ptr [edx+C0]
0061137F . E9 B1010000 jmp 00611535
00611384 > 8D55 E8 lea edx, dword ptr [ebp-18]
00611387 . 8B45 FC mov eax, dword ptr [ebp-4]
0061138A . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
00611390 . E8 CBDDE3FF call 0044F160 ; // 取授权码(这里是我们输入的假码0123456789ABCD)
00611395 . 8B45 E8 mov eax, dword ptr [ebp-18]
00611398 . 8D55 EC lea edx, dword ptr [ebp-14]
0061139B . E8 4C83DFFF call 004096EC
006113A0 . 837D EC 00 cmp dword ptr [ebp-14], 0 ; // 判断授权码是否为空
006113A4 . 75 22 jnz short 006113C8 ; // 不空则跳
006113A6 . 6A 00 push 0
006113A8 . 68 BC156100 push 006115BC ; 授权号不能为空,请填写授权号!
006113AD . E8 FE0DFEFF call <jmp.&PunUnitLib.ShowMess>
006113B2 . 8B45 FC mov eax, dword ptr [ebp-4]
006113B5 . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
006113BB . 8B10 mov edx, dword ptr [eax]
006113BD . FF92 C0000000 call dword ptr [edx+C0]
006113C3 . E9 6D010000 jmp 00611535
006113C8 > A1 98576900 mov eax, dword ptr [695798]
006113CD . 8B00 mov eax, dword ptr [eax] ; 固定字符串 "C3H5-C2L8"
006113CF . E8 683BDFFF call 00404F3C
006113D4 . 50 push eax
006113D5 . 8D55 E4 lea edx, dword ptr [ebp-1C]
006113D8 . 8B45 FC mov eax, dword ptr [ebp-4]
006113DB . 8B80 F4020000 mov eax, dword ptr [eax+2F4]
006113E1 . E8 7ADDE3FF call 0044F160 ; //取机器码
006113E6 . 8B45 E4 mov eax, dword ptr [ebp-1C]
006113E9 . E8 4E3BDFFF call 00404F3C
006113EE . 50 push eax
006113EF . E8 EC0DFEFF call <jmp.&PunUnitLib.GetRegPass> ; // ★ 算法call ★ F7 跟进
006113F4 . 8BD0 mov edx, eax ; //真码(内存注册机)
006113F6 . 8D45 F8 lea eax, dword ptr [ebp-8]
006113F9 . E8 7E38DFFF call 00404C7C
006113FE . 8D55 DC lea edx, dword ptr [ebp-24]
00611401 . 8B45 FC mov eax, dword ptr [ebp-4]
00611404 . 8B80 FC020000 mov eax, dword ptr [eax+2FC]
0061140A . E8 51DDE3FF call 0044F160
0061140F . 8B45 DC mov eax, dword ptr [ebp-24]
00611412 . 8D55 E0 lea edx, dword ptr [ebp-20]
00611415 . E8 D282DFFF call 004096EC
0061141A . 8B45 E0 mov eax, dword ptr [ebp-20]
0061141D . 8B55 F8 mov edx, dword ptr [ebp-8]
00611420 . E8 633ADFFF call 00404E88 ; //真假码比较
00611425 . 0F85 FE000000 jnz 00611529 ; //关键跳转,不等则跳向失败处(爆破点)
0061142B . 33C0 xor eax, eax
0061142D . 55 push ebp
0061142E . 68 15156100 push 00611515
00611433 . 64:FF30 push dword ptr fs:[eax]
00611436 . 64:8920 mov dword ptr fs:[eax], esp
00611439 . B2 01 mov dl, 1
0061143B . A1 84314700 mov eax, dword ptr [473184]
00611440 . E8 AB1EE6FF call 004732F0
00611445 . 8BD8 mov ebx, eax
00611447 . BA 02000080 mov edx, 80000002
0061144C . 8BC3 mov eax, ebx
0061144E . E8 791FE6FF call 004733CC
00611453 . B1 01 mov cl, 1
00611455 . 8B15 744D6900 mov edx, dword ptr [694D74] ; JyCARman.0061123C
0061145B . 8BC3 mov eax, ebx
0061145D . E8 AE20E6FF call 00473510
00611462 . 8D55 D8 lea edx, dword ptr [ebp-28]
00611465 . 8B45 FC mov eax, dword ptr [ebp-4]
00611468 . 8B80 04030000 mov eax, dword ptr [eax+304]
0061146E . E8 EDDCE3FF call 0044F160
00611473 . 8B4D D8 mov ecx, dword ptr [ebp-28]
00611476 . BA E4156100 mov edx, 006115E4 ; username
0061147B . 8BC3 mov eax, ebx
0061147D . E8 2A22E6FF call 004736AC
00611482 . 8D55 D0 lea edx, dword ptr [ebp-30]
00611485 . 8B45 FC mov eax, dword ptr [ebp-4]
00611488 . 8B80 F4020000 mov eax, dword ptr [eax+2F4]
0061148E . E8 CDDCE3FF call 0044F160
00611493 . 8B45 D0 mov eax, dword ptr [ebp-30]
00611496 . E8 A13ADFFF call 00404F3C
0061149B . 50 push eax
0061149C . E8 370DFEFF call <jmp.&PunUnitLib.SavePass>
006114A1 . 8BD0 mov edx, eax
006114A3 . 8D45 D4 lea eax, dword ptr [ebp-2C]
006114A6 . E8 D137DFFF call 00404C7C
006114AB . 8B4D D4 mov ecx, dword ptr [ebp-2C]
006114AE . BA F8156100 mov edx, 006115F8 ; signcode
006114B3 . 8BC3 mov eax, ebx
006114B5 . E8 F221E6FF call 004736AC
006114BA . 8B45 F8 mov eax, dword ptr [ebp-8]
006114BD . E8 7A3ADFFF call 00404F3C
006114C2 . 50 push eax
006114C3 . E8 100DFEFF call <jmp.&PunUnitLib.SavePass>
006114C8 . 8BD0 mov edx, eax
006114CA . 8D45 CC lea eax, dword ptr [ebp-34]
006114CD . E8 AA37DFFF call 00404C7C
006114D2 . 8B4D CC mov ecx, dword ptr [ebp-34]
006114D5 . BA 0C166100 mov edx, 0061160C ; regcode
006114DA . 8BC3 mov eax, ebx
006114DC . E8 CB21E6FF call 004736AC
006114E1 . 8BC3 mov eax, ebx
006114E3 . E8 3427DFFF call 00403C1C
006114E8 . 6A 00 push 0
006114EA . 68 14166100 push 00611614 ; 系统注册成功,欢迎你使用本软件!
006114EF . E8 BC0CFEFF call <jmp.&PunUnitLib.ShowMess>
006114F4 . A1 94576900 mov eax, dword ptr [695794]
006114F9 . C700 02000000 mov dword ptr [eax], 2
006114FF . A1 24556900 mov eax, dword ptr [695524]
00611504 . 8B00 mov eax, dword ptr [eax]
00611506 . E8 51F8E5FF call 00470D5C
0061150B . 33C0 xor eax, eax
0061150D . 5A pop edx
0061150E . 59 pop ecx
0061150F . 59 pop ecx
00611510 . 64:8910 mov dword ptr fs:[eax], edx
00611513 . EB 20 jmp short 00611535
00611515 .^ E9 E22BDFFF jmp 004040FC
0061151A . 8B45 FC mov eax, dword ptr [ebp-4]
0061151D . E8 8ABFE5FF call 0046D4AC
00611522 . E8 0130DFFF call 00404528
00611527 . EB 0C jmp short 00611535
00611529 > 6A 03 push 3
0061152B . 68 38166100 push 00611638 ; 系统注册失败,请检查注册是否有误!
00611530 . E8 7B0CFEFF call <jmp.&PunUnitLib.ShowMess>
00611535 > 33C0 xor eax, eax
00611537 . 5A pop edx
00611538 . 59 pop ecx
00611539 . 59 pop ecx
0061153A . 64:8910 mov dword ptr fs:[eax], edx
...
★ 算法call ★ F7 跟进
...
00889024 > 55 push ebp ; // F8一步到这里
00889025 8BEC mov ebp, esp
00889027 B9 06000000 mov ecx, 6
0088902C 6A 00 push 0
0088902E 6A 00 push 0
00889030 49 dec ecx
00889031 ^ 75 F9 jnz short 0088902C
00889033 53 push ebx
00889034 56 push esi
00889035 33C0 xor eax, eax
00889037 55 push ebp
00889038 68 F2918800 push 008891F2
0088903D 64:FF30 push dword ptr fs:[eax]
00889040 64:8920 mov dword ptr fs:[eax], esp
00889043 8D45 EC lea eax, dword ptr [ebp-14]
00889046 E8 65B5F8FF call 008145B0
0088904B 8D45 F0 lea eax, dword ptr [ebp-10]
0088904E 8B55 08 mov edx, dword ptr [ebp+8] ; // 机器码给EDX
00889051 E8 4AB7F8FF call 008147A0
00889056 8B45 F0 mov eax, dword ptr [ebp-10]
00889059 E8 0AB8F8FF call 00814868
0088905E 8BF0 mov esi, eax
00889060 85F6 test esi, esi
00889062 7E 26 jle short 0088908A
00889064 BB 01000000 mov ebx, 1
00889069 8D4D E8 lea ecx, dword ptr [ebp-18]
0088906C 8B45 F0 mov eax, dword ptr [ebp-10]
0088906F 0FB64418 FF movzx eax, byte ptr [eax+ebx-1]
00889074 33D2 xor edx, edx
00889076 E8 F905F9FF call 00819674
0088907B 8B55 E8 mov edx, dword ptr [ebp-18]
0088907E 8D45 FC lea eax, dword ptr [ebp-4]
00889081 E8 EAB7F8FF call 00814870
00889086 43 inc ebx
00889087 4E dec esi
00889088 ^ 75 DF jnz short 00889069 ; //以上循环转换机器码为十六进制字符串STR1
0088908A 8B45 FC mov eax, dword ptr [ebp-4] ; //STR1给EAX
0088908D E8 D6B7F8FF call 00814868
00889092 8BF0 mov esi, eax
00889094 85F6 test esi, esi
00889096 7E 2C jle short 008890C4
00889098 BB 01000000 mov ebx, 1
0088909D 8B45 FC mov eax, dword ptr [ebp-4]
008890A0 E8 C3B7F8FF call 00814868
008890A5 2BC3 sub eax, ebx
008890A7 8B55 FC mov edx, dword ptr [ebp-4]
008890AA 8A1402 mov dl, byte ptr [edx+eax]
008890AD 8D45 E4 lea eax, dword ptr [ebp-1C]
008890B0 E8 DBB6F8FF call 00814790
008890B5 8B55 E4 mov edx, dword ptr [ebp-1C]
008890B8 8D45 F8 lea eax, dword ptr [ebp-8]
008890BB E8 B0B7F8FF call 00814870
008890C0 43 inc ebx
008890C1 4E dec esi
008890C2 ^ 75 D9 jnz short 0088909D ; //以上循环将STR1倒序为STR2
008890C4 8D45 FC lea eax, dword ptr [ebp-4]
008890C7 50 push eax
008890C8 B9 04000000 mov ecx, 4
008890CD BA 01000000 mov edx, 1
008890D2 8B45 F8 mov eax, dword ptr [ebp-8] ; //STR2给EAX
008890D5 E8 E6B9F8FF call 00814AC0
008890DA 8D45 F8 lea eax, dword ptr [ebp-8]
008890DD 50 push eax
008890DE B9 04000000 mov ecx, 4
008890E3 BA 05000000 mov edx, 5
008890E8 8B45 F8 mov eax, dword ptr [ebp-8]
008890EB E8 D0B9F8FF call 00814AC0
008890F0 8B45 FC mov eax, dword ptr [ebp-4] ; //取STR2前4位字符设为STR3
008890F3 E8 70B7F8FF call 00814868
008890F8 83F8 04 cmp eax, 4 ; //判断STR3是否大于等于4位
008890FB 7D 2F jge short 0088912C
008890FD 8B45 FC mov eax, dword ptr [ebp-4]
00889100 E8 63B7F8FF call 00814868
00889105 8BD8 mov ebx, eax
00889107 83FB 03 cmp ebx, 3
0088910A 7F 20 jg short 0088912C
0088910C 8D4D E0 lea ecx, dword ptr [ebp-20]
0088910F 8BC3 mov eax, ebx
00889111 C1E0 02 shl eax, 2
00889114 33D2 xor edx, edx
00889116 E8 5905F9FF call 00819674
0088911B 8B55 E0 mov edx, dword ptr [ebp-20]
0088911E 8D45 FC lea eax, dword ptr [ebp-4]
00889121 E8 4AB7F8FF call 00814870
00889126 43 inc ebx
00889127 83FB 04 cmp ebx, 4
0088912A ^ 75 E0 jnz short 0088910C
0088912C 8B45 F8 mov eax, dword ptr [ebp-8] ; //将STR2第五到第八位的字符,送给EAX,设为STR4
0088912F E8 34B7F8FF call 00814868
00889134 83F8 04 cmp eax, 4 ;//判断STR4是否大于等于4位
00889137 7D 2F jge short 00889168
00889139 8B45 F8 mov eax, dword ptr [ebp-8]
0088913C E8 27B7F8FF call 00814868
00889141 8BD8 mov ebx, eax
00889143 83FB 03 cmp ebx, 3
00889146 7F 20 jg short 00889168
00889148 8D4D DC lea ecx, dword ptr [ebp-24]
0088914B 8BC3 mov eax, ebx
0088914D C1E0 02 shl eax, 2
00889150 33D2 xor edx, edx
00889152 E8 1D05F9FF call 00819674
00889157 8B55 DC mov edx, dword ptr [ebp-24]
0088915A 8D45 F8 lea eax, dword ptr [ebp-8]
0088915D E8 0EB7F8FF call 00814870
00889162 43 inc ebx
00889163 83FB 04 cmp ebx, 4
00889166 ^ 75 E0 jnz short 00889148
00889168 8D45 D8 lea eax, dword ptr [ebp-28]
0088916B 8B55 0C mov edx, dword ptr [ebp+C] ; //取固定字符串 "C3H5-C2L8" 给EDX
0088916E E8 2DB6F8FF call 008147A0
00889173 8B45 D8 mov eax, dword ptr [ebp-28]
00889176 8D55 F4 lea edx, dword ptr [ebp-C]
00889179 E8 DE03F9FF call 0081955C
0088917E 8D45 D4 lea eax, dword ptr [ebp-2C]
00889181 50 push eax
00889182 B9 04000000 mov ecx, 4
00889187 BA 01000000 mov edx, 1
0088918C 8B45 F4 mov eax, dword ptr [ebp-C]
0088918F E8 2CB9F8FF call 00814AC0 ; //取字符串"C3H5-C2L8"前4位即C3H5设为A1
00889194 FF75 D4 push dword ptr [ebp-2C]
00889197 68 0C928800 push 0088920C
0088919C FF75 FC push dword ptr [ebp-4]
0088919F 8D45 D0 lea eax, dword ptr [ebp-30]
008891A2 50 push eax
008891A3 B9 05000000 mov ecx, 5
008891A8 BA 05000000 mov edx, 5
008891AD 8B45 F4 mov eax, dword ptr [ebp-C]
008891B0 E8 0BB9F8FF call 00814AC0 ; //取字符串"C3H5-C2L8"后5位即-C2L8设为A2
008891B5 FF75 D0 push dword ptr [ebp-30]
008891B8 68 0C928800 push 0088920C
008891BD FF75 F8 push dword ptr [ebp-8]
008891C0 8D45 EC lea eax, dword ptr [ebp-14]
008891C3 BA 06000000 mov edx, 6
008891C8 E8 5BB7F8FF call 00814928
008891CD 8B45 EC mov eax, dword ptr [ebp-14] ; //组合字符串“A1-STR3-A2-STR4”为授权码
008891D0 E8 8BB8F8FF call 00814A60
008891D5 8BD8 mov ebx, eax
008891D7 33C0 xor eax, eax
008891D9 5A pop edx
008891DA 59 pop ecx
008891DB 59 pop ecx
008891DC 64:8910 mov dword ptr fs:[eax], edx
008891DF 68 F9918800 push 008891F9
008891E4 8D45 D0 lea eax, dword ptr [ebp-30]
008891E7 BA 0C000000 mov edx, 0C
008891EC E8 E3B3F8FF call 008145D4
008891F1 C3 retn
008891F2 ^ E9 1DADF8FF jmp 00813F14
008891F7 ^ EB EB jmp short 008891E4
008891F9 8BC3 mov eax, ebx ; //授权码给EAX
008891FB 5E pop esi ; JyCARman.00477B20
008891FC 5B pop ebx
008891FD 8BE5 mov esp, ebp
008891FF 5D pop ebp
00889200 C2 0800 retn 8
...
【经验总结】
算法注册机:将产品编号字符串转换为十六进制,再倒序排列,取倒序后的字符串前四位为STR3,第五位到第八位为STR4,利用固定字符串 "C3H5-C2L8"交叉组合为授权码,即:C3H5-STR3-C2L8-STR4。鉴于时间关系,注册机代码偶就不写了。哪位大虾可以补充一下。
内存注册机: 中断地址 006113F4
中断次数 1
第一字节 8B
指令长度 2
内存方式
寄存器 EAX
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
gwh
雪 币:
200
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
6
回帖
47
粉丝
0
关注
私信
gwh
2
楼
先收藏,坐个沙发
2008-5-23 08:26
0
scnczb
雪 币:
200
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
8
粉丝
0
关注
私信
scnczb
3
楼
学习一下,谢谢楼主,正学学习这方面的知识,
2008-6-12 19:51
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
wiliy
6
发帖
35
回帖
10
RANK
关注
私信
他的文章
郁闷了,学JAVA还是学"软件测试工程师“好?
35807
LIST_ENTRY 茫然了!!!
5524
[建议]关于论坛改制的一些感想
3052
[原创]佳宜车辆信息管理软件 v1.10(企业版) 算法分析
4290
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部