吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1839|回复: 12

[原创逆向图文] VMP 3.8虚拟机详细解析(上)

[复制链接]
jjyjjy003159 发表于 2023-9-16 08:43 | 显示全部楼层 |阅读模式

系统环境:Win7 x64
使用软件:X32DBG,VMP 3.8.1,易语言
之前出过一点对VMP3.8的虚拟机浅析
没怎么讲handler
现在来详细分析VMP 3.8的虚拟机架构


fakename.png
测试软件代码如上图

fakename.png

VMP设置如上图
我只是分析handler复杂度没必要拉百分之百(主要是VS安装不了,只能人肉分析,不然拉百分之百也无所谓)

我们打开x32dbg,调试这个加密后的软件
然后找到被V过的函数头部
如果你连这个函数头部都找不到,那就不好说了


fakename.png

为了方便分析,我们用跟踪步入把他打印下来
这里看一下如何设置暂停条件

fakename.png

如果eip<47E000 (代码段结束地址)
则暂停


fakename.png

fakename.png


fakename.png

这样一整个代码都出来,方便我们分析,不然我不好讲

我们分割handler的方式我这里总结了一下,一般是用jmp reg32   VMP 3.8的
不过他这个寄存器不固定,有寄存器轮转
我们从日志一直往下找到jmp reg32


[Asm] 纯文本查看 复制代码
0000 | 00572948 | E8 FBBEFDFF              | call crack.vmp.54E848                   | eax: FFFFFFFF-> FFFFFFFF ebx: 1-> 1 ecx: 1F30FE0- | 0018F6B8: 1F30FE0-> 57294D                        |
0001 | 0054E848 | C74424 04 E285ACFF       | mov dword ptr ss:[esp+4],FFAC85E2       |                                                   | 0018F6BC: 4010B1-> FFAC85E2                       |
0002 | 0054E850 | 8D6424 04                | lea esp,dword ptr ss:[esp+4]            | esp: 18F6B8-> 18F6BC                              |                                                   |
0003 | 0054E854 | E8 6B4FFCFF              | call crack.vmp.5137C4                   | esp: 18F6BC-> 18F6B8                              | 0018F6B8: 57294D-> 54E859                         |
0004 | 005137C4 | E8 7A7D0000              | call crack.vmp.51B543                   | esp: 18F6B8-> 18F6B4                              | 0018F6B4: 1-> 5137C9                              |
0005 | 0051B543 | 893C24                   | mov dword ptr ss:[esp],edi              |                                                   | 0018F6B4: 5137C9-> 7D8                            |
0006 | 0051B546 | BF BEEA28D8              | mov edi,D828EABE                        | edi: 7D8-> D828EABE                               |                                                   |
0007 | 0051B54B | 50                       | push eax                                | esp: 18F6B4-> 18F6B0                              | 0018F6B0: 18F6F4-> FFFFFFFF                       |
0008 | 0051B54C | 56                       | push esi                                | esp: 18F6B0-> 18F6AC                              | 0018F6AC: 4B07E8-> 4B07E8                         | esi:"('H"
0009 | 0051B54D | 9C                       | pushfd                                  | esp: 18F6AC-> 18F6A8 eflags: 286-> 284            | 0018F6A8: 7D8-> 286                               |
000A | 0051B54E | E8 BD3CFDFF              | call crack.vmp.4EF210                   | esp: 18F6A8-> 18F6A4 eflags: 284-> 286            | 0018F6A4: 252AF1-> 51B553                         |
000B | 004EF210 | C70424 A8DB1866          | mov dword ptr ss:[esp],6618DBA8         |                                                   | 0018F6A4: 51B553-> 6618DBA8                       |
000C | 004EF217 | 293C24                   | sub dword ptr ss:[esp],edi              | eflags: 286-> A93                                 | 0018F6A4: 6618DBA8-> 8DEFF0EA                     |
000D | 004EF21A | 891424                   | mov dword ptr ss:[esp],edx              |                                                   | 0018F6A4: 8DEFF0EA-> 18F75C                       |
000E | 004EF21D | 53                       | push ebx                                | esp: 18F6A4-> 18F6A0                              | 0018F6A0: 252AF7-> 1                              |
000F | 004EF21E | BB A3401322              | mov ebx,221340A3                        | ebx: 1-> 221340A3                                 |                                                   |
0010 | 004EF223 | F7D3                     | not ebx                                 | ebx: 221340A3-> DDECBF5C                          |                                                   |
0011 | 004EF225 | 56                       | push esi                                | esp: 18F6A0-> 18F69C                              | 0018F69C: 252B20-> 4B07E8                         | esi:"('H"
0012 | 004EF226 | E8 5884FCFF              | call crack.vmp.4B7683                   | esp: 18F69C-> 18F698                              | 0018F698: 4124EA-> 4EF22B                         |
0013 | 004B7683 | 893C24                   | mov dword ptr ss:[esp],edi              |                                                   | 0018F698: 4EF22B-> D828EABE                       |
0014 | 004B7686 | 892C24                   | mov dword ptr ss:[esp],ebp              |                                                   | 0018F698: D828EABE-> 18F6C0                       |
0015 | 004B7689 | 8D049D 93621542          | lea eax,dword ptr ds:[ebx*4+42156293]   | eax: FFFFFFFF-> B9C86003                          |                                                   |
0016 | 004B7690 | 0F8F B8300700            | jg crack.vmp.52A74E                     |                                                   |                                                   |
0017 | 0052A74E | BE 9152B2E1              | mov esi,E1B25291                        | esi: 4B07E8-> E1B25291                            |                                                   | esi:"('H"
0018 | 0052A753 | 51                       | push ecx                                | esp: 18F698-> 18F694                              | 0018F694: 1000B-> 1F30FE0                         |
0019 | 0052A754 | 66:F7D6                  | not si                                  | esi: E1B25291-> E1B2AD6E                          |                                                   |
001A | 0052A757 | 8DACB3 9B542165          | lea ebp,dword ptr ds:[ebx+esi*4+6521549 | ebp: 18F6C0-> C9D8C9AF                            |                                                   |
001B | 0052A75E | BB 00000000              | mov ebx,0                               | ebx: DDECBF5C-> 0                                 |                                                   |
001C | 0052A763 | 66:F7D7                  | not di                                  | edi: D828EABE-> D8281541                          |                                                   |
001D | 0052A766 | 895C24 18                | mov dword ptr ss:[esp+18],ebx           |                                                   | 0018F6AC: 4B07E8-> 0                              |
001E | 0052A76A | 8B7424 28                | mov esi,dword ptr ss:[esp+28]           | esi: E1B2AD6E-> FFAC85E2                          | 0018F6BC: FFAC85E2-> FFAC85E2                     | [esp+28]:"('H"
001F | 0052A76E | 46                       | inc esi                                 | esi: FFAC85E2-> FFAC85E3 eflags: A93-> 283        |                                                   | esi:"('H"
0020 | 0052A76F | F7DE                     | neg esi                                 | esi: FFAC85E3-> 537A1D eflags: 283-> 217          |                                                   | esi:"('H"
0021 | 0052A771 | F7D6                     | not esi                                 | esi: 537A1D-> FFAC85E2                            |                                                   | esi:"('H"
0022 | 0052A773 | 66:81CF 3950             | or di,5039                              | edi: D8281541-> D8285579 eflags: 217-> 202        |                                                   |
0023 | 0052A778 | 1AC4                     | sbb al,ah                               | eax: B9C86003-> B9C860A3 eflags: 202-> 287        |                                                   |
0024 | 0052A77A | F7DE                     | neg esi                                 | esi: FFAC85E2-> 537A1E eflags: 287-> 217          |                                                   | esi:"('H"
0025 | 0052A77C | C1ED E6                  | shr ebp,E6                              | ebp: C9D8C9AF-> 3276326 eflags: 217-> A03         |                                                   |
0026 | 0052A77F | 4E                       | dec esi                                 | esi: 537A1E-> 537A1D eflags: A03-> 207            |                                                   | esi:"('H"
0027 | 0052A780 | 66:0BFF                  | or di,di                                | eflags: 207-> 202                                 |                                                   |
0028 | 0052A783 | 13F3                     | adc esi,ebx                             | eflags: 202-> 206                                 |                                                   | esi:"('H"
0029 | 0052A785 | C1C7 CD                  | rol edi,CD                              | edi: D8285579-> AAF3B05 eflags: 206-> 207         |                                                   |
002A | 0052A788 | 8BEC                     | mov ebp,esp                             | ebp: 3276326-> 18F694                             |                                                   |
002B | 0052A78A | 8BD8                     | mov ebx,eax                             | ebx: 0-> B9C860A3                                 |                                                   |
002C | 0052A78C | 8D842F 0FC450F5          | lea eax,dword ptr ds:[edi+ebp-AAF3BF1]  | eax: B9C860A3-> 18F5A8                            |                                                   |
002D | 0052A793 | 8BE0                     | mov esp,eax                             | esp: 18F694-> 18F5A8                              |                                                   |
002E | 0052A795 | BF 0D86A3FF              | mov edi,FFA3860D                        | edi: AAF3B05-> FFA3860D                           |                                                   |
002F | 0052A79A | 8D1C7D 1B652CE4          | lea ebx,dword ptr ds:[edi*2-1BD39AE5]   | ebx: B9C860A3-> E3737135                          |                                                   |
0030 | 0052A7A1 | 8BDE                     | mov ebx,esi                             | ebx: E3737135-> 537A1D                            |                                                   | esi:"('H"
0031 | 0052A7A3 | 8BCF                     | mov ecx,edi                             | ecx: 1F30FE0-> FFA3860D                           |                                                   |
0032 | 0052A7A5 | 66:D3C1                  | rol cx,cl                               | ecx: FFA3860D-> FFA3B0C1 eflags: 207-> A07        |                                                   |
0033 | 0052A7A8 | B9 00000000              | mov ecx,0                               | ecx: FFA3B0C1-> 0                                 |                                                   |
0034 | 0052A7AD | 57                       | push edi                                | esp: 18F5A8-> 18F5A4                              | 0018F5A4: 2593D0-> FFA3860D                       |
0035 | 0052A7AE | 2BD9                     | sub ebx,ecx                             | eflags: A07-> 206                                 |                                                   |
0036 | 0052A7B0 | 8D6424 04                | lea esp,dword ptr ss:[esp+4]            | esp: 18F5A4-> 18F5A8                              |                                                   |
0037 | 0052A7B4 | B9 A2133D9D              | mov ecx,9D3D13A2                        | ecx: 0-> 9D3D13A2                                 |                                                   |
0038 | 0052A7B9 | 0FBEF9                   | movsx edi,cl                            | edi: FFA3860D-> FFFFFFA2                          |                                                   |
0039 | 0052A7BC | 8D3D B4A75200            | lea edi,dword ptr ds:[52A7B4]           | edi: FFFFFFA2-> 52A7B4                            |                                                   |
003A | 0052A7C2 | 8BD1                     | mov edx,ecx                             | edx: 18F75C-> 9D3D13A2                            |                                                   |
003B | 0052A7C4 | 81EE 04000000            | sub esi,4                               | esi: 537A1D-> 537A19 eflags: 206-> 202            |                                                   | esi:"('H"
003C | 0052A7CA | 8D8409 8F800016          | lea eax,dword ptr ds:[ecx+ecx+1600808F] | eax: 18F5A8-> 507AA7D3                            |                                                   |
003D | 0052A7D1 | 8B9406 2D5885AF          | mov edx,dword ptr ds:[esi+eax-507AA7D3] | edx: 9D3D13A2-> 418C3C4B                          | 00537A19: 418C3C4B-> 418C3C4B                     |
003E | 0052A7D8 | 66:03C8                  | add cx,ax                               | ecx: 9D3D13A2-> 9D3DBB75 eflags: 202-> 282        |                                                   |
003F | 0052A7DB | 80C9 09                  | or cl,9                                 | ecx: 9D3DBB75-> 9D3DBB7D eflags: 282-> 206        |                                                   |
0040 | 0052A7DE | 0FC1C1                   | xadd ecx,eax                            | eax: 507AA7D3-> 9D3DBB7D ecx: 9D3DBB7D-> EDB86350 |                                                   |
0041 | 0052A7E1 | 33D3                     | xor edx,ebx                             | edx: 418C3C4B-> 41DF4656 eflags: 296-> 206        |                                                   |
0042 | 0052A7E3 | F7DA                     | neg edx                                 | edx: 41DF4656-> BE20B9AA eflags: 206-> 297        |                                                   |
0043 | 0052A7E5 | 40                       | inc eax                                 | eax: 9D3DBB7D-> 9D3DBB7E eflags: 297-> 287        |                                                   |
0044 | 0052A7E6 | 50                       | push eax                                | esp: 18F5A8-> 18F5A4                              | 0018F5A4: FFA3860D-> 9D3DBB7E                     |
0045 | 0052A7E7 | E8 9595FBFF              | call crack.vmp.4E3D81                   | esp: 18F5A4-> 18F5A0                              | 0018F5A0: 240000-> 52A7EC                         |
0046 | 004E3D81 | C1C2 02                  | rol edx,2                               | edx: BE20B9AA-> F882E6AA eflags: 287-> 286        |                                                   |
0047 | 004E3D84 | E8 B68E0000              | call crack.vmp.4ECC3F                   | esp: 18F5A0-> 18F59C                              | 0018F59C: 0-> 4E3D89                              |
0048 | 004ECC3F | C0F8 46                  | sar al,46                               | eax: 9D3DBB7E-> 9D3DBB01 eflags: 286-> 203        |                                                   |
0049 | 004ECC42 | E8 2A1BFFFF              | call crack.vmp.4DE771                   | esp: 18F59C-> 18F598                              | 0018F598: 779D9FF2-> 4ECC47                       |
004A | 004DE771 | 81F2 AB4D24D5            | xor edx,D5244DAB                        | edx: F882E6AA-> 2DA6AB01 eflags: 203-> 202        |                                                   |
004B | 004DE777 | 42                       | inc edx                                 | edx: 2DA6AB01-> 2DA6AB02                          |                                                   |
004C | 004DE778 | 33C1                     | xor eax,ecx                             | eax: 9D3DBB01-> 7085D851                          |                                                   |
004D | 004DE77A | 81F2 ABA7A52D            | xor edx,2DA5A7AB                        | edx: 2DA6AB02-> 30CA9 eflags: 202-> 206           |                                                   |
004E | 004DE780 | 33DA                     | xor ebx,edx                             | ebx: 537A1D-> 5076B4                              |                                                   |
004F | 004DE782 | 59                       | pop ecx                                 | ecx: EDB86350-> 4ECC47 esp: 18F598-> 18F59C       | 0018F598: 4ECC47-> 4ECC47                         |
0050 | 004DE783 | 03FA                     | add edi,edx                             | edi: 52A7B4-> 55B45D eflags: 206-> 202            |                                                   |
0051 | 004DE785 | 8D8440 0C80304F          | lea eax,dword ptr ds:[eax+eax*2+4F30800 | eax: 7085D851-> A0C208FF                          |                                                   |
0052 | 004DE78C | E8 25ECFDFF              | call crack.vmp.4BD3B6                   | esp: 18F59C-> 18F598                              | 0018F598: 4ECC47-> 4DE791                         |
0053 | 004BD3B6 | 59                       | pop ecx                                 | ecx: 4ECC47-> 4DE791 esp: 18F598-> 18F59C         | 0018F598: 4DE791-> 4DE791                         |
0054 | 004BD3B7 | 58                       | pop eax                                 | eax: A0C208FF-> 4E3D89 esp: 18F59C-> 18F5A0       | 0018F59C: 4E3D89-> 4E3D89                         |
0055 | 004BD3B8 | 58                       | pop eax                                 | eax: 4E3D89-> 52A7EC esp: 18F5A0-> 18F5A4         | 0018F5A0: 52A7EC-> 52A7EC                         |
0056 | 004BD3B9 | 5A                       | pop edx                                 | edx: 30CA9-> 9D3DBB7E esp: 18F5A4-> 18F5A8        | 0018F5A4: 9D3DBB7E-> 9D3DBB7E                     |
0057 | 004BD3BA | FFE7                     | jmp edi                                 |                                                   |                                                   |




这个就是一整个代码,至于是执行什么的我们等会分析
我把前面的指令去掉,只保留反汇编指令方便分析
[Asm] 纯文本查看 复制代码
call crack.vmp.54E848
mov dword ptr ss:[esp+4],FFAC85E2   这个地址后面会调用到,我们先记着,等会分析
lea esp,dword ptr ss:[esp+4]                按道理push应该是-0x4,他这里是+0x4也留着等会分析
call crack.vmp.5137C4                          -0x4
call crack.vmp.51B543                           -0x4
mov dword ptr ss:[esp],edi      
mov edi,D828EABE
push eax   -0x4
push esi    -0x4
pushfd      -0x4
call crack.vmp.4EF210    -0x4
mov dword ptr ss:[esp],6618DBA8
sub dword ptr ss:[esp],edi
mov dword ptr ss:[esp],edx
push ebx    -0x4
mov ebx,221340A3
not ebx
push esi    -0x4
call crack.vmp.4B7683    -0x4
mov dword ptr ss:[esp],edi
mov dword ptr ss:[esp],ebp
lea eax,dword ptr ds:[ebx*4+42156293]
jg crack.vmp.52A74E
mov esi,E1B25291
push ecx       -0x4
not si
lea ebp,dword ptr ds:[ebx+esi*4+6521549B]
mov ebx,0
not di
mov dword ptr ss:[esp+18],ebx
mov esi,dword ptr ss:[esp+28]                !!!,注意,这里+0x28与3.5的虚拟机一样,所以我们可以得出一个结论,开始那个imm32,等价于VMP 3.5入口中的push Imm32
而且上面依然是保存了所有寄存器,只是不是完全的push,而是通过其他指令对堆栈进行操作(±0x4),然后写[esp]
inc esi   
neg esi
not esi
or di,5039
sbb al,ah
neg esi
shr ebp,E6
dec esi
//解密ESI
or di,di
adc esi,ebx
rol edi,CD
mov ebp,esp
mov ebx,eax
lea eax,dword ptr ds:[edi+ebp-AAF3BF1]    eax: B9C860A3-> 18F5A8   
mov esp,eax                      ESP=EAX             ESP-EAX=EC
mov edi,FFA3860D               
lea ebx,dword ptr ds:[edi*2-1BD39AE5]              //对EBX的操作是无效的,因为这个指令下面没有对EBX的读写操作,只有写操作,所以判定无效   (这也是后面写反混淆可能会用到的)
mov ebx,esi          EBX=ESI    ESI=解密Key后的地址
mov ecx,edi
rol cx,cl
mov ecx,0
push edi                        -0x4
sub ebx,ecx
lea esp,dword ptr ss:[esp+4]                     +0x4
mov ecx,9D3D13A2             参与后面运算                                   
movsx edi,cl
lea edi,dword ptr ds:[52A7B4]                                 读VM数据
mov edx,ecx                                                            
sub esi,4                      解密Key后的地址-4
lea eax,dword ptr ds:[ecx+ecx+1600808F]               eax: 18F5A8-> 507AA7D3                            |                                                   |
mov edx,dword ptr ds:[esi+eax-507AA7D3]             edx: 9D3D13A2-> 418C3C4B                          | 00537A19: 418C3C4B-> 418C3C4B                     |
add cx,ax
or cl,9
xadd ecx,eax
xor edx,ebx
neg edx
inc eax
push eax
call crack.vmp.4E3D81
rol edx,2
call crack.vmp.4ECC3F
sar al,46
call crack.vmp.4DE771
xor edx,D5244DAB
inc edx
xor eax,ecx
xor edx,2DA5A7AB           EDX解密完毕,下面会用这个值得到下一个块地址
xor ebx,edx
pop ecx
add edi,edx            55B45D          得到下一个块地址
lea eax,dword ptr ds:[eax+eax*2+4F30800C]  
call crack.vmp.4BD3B6
pop ecx
pop eax
pop eax
pop edx
jmp edi          跳转到下一个块



由于时间原因,这个分析会分为3个章节
上,中 ,下
这期就到这里吧,下一期会用这个逻辑与VMP3.5的虚拟机做比较
可以发现,逻辑上和VMP3.5还是有相同之处,开始还是会压一个Key


后面的东西,我也大致看了一下,就是通过一系列运算,得到vmcontext地址,然后把开始压入的寄存器写进去,方便后面进行运算
像这种虚拟机就是典型的栈机,很多堆栈的操作,相比于3.5来说,可能是把堆栈的操作混淆了,不再是原来那些一眼就能看出来地址的
而是用了很多mem来计算地址

上没讲到核心,主要只讲入口,主要是时间原因,可能下午会出中·章节,对VMP的VmContext,以及JCC会详细讲
下·章节,就是整理一整个虚拟机的执行逻辑,然后针对这个开发出伪指令的识别
反正和3.5的虚拟机逻辑上相差不大,主要是代码变得更复杂了,人工分析很不舒服,Unicorn也不太好分析指令的作用



评分

参与人数 16HB +21 THX +7 收起 理由
消逝的过去 + 2
gps + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
再来壹瓶 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
我来汇编 + 1
卡卡作者 + 2 + 1 很好
longge188 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
woshuoxiang + 2 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
退隐-ZL + 1
sjtkxy + 1 + 1
冰城大志 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
192939 + 2 + 1
2lht_love + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
美好映像 + 2 + 1
lies + 1
29590 + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
boot 发表于 2023-9-16 10:15 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Intoxicate 发表于 2023-9-16 10:51 | 显示全部楼层

支持支持支持支持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lies 发表于 2023-9-16 12:06 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
acaidipan 发表于 2023-9-17 07:55 | 显示全部楼层

学习下,期待后面内容
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
2lht_love 发表于 2023-9-17 10:42 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
温九 发表于 2023-9-17 21:52 | 显示全部楼层

感谢分享 都是干货
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sjtkxy 发表于 2023-9-18 04:31 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lyl537c 发表于 2023-9-18 14:37 | 显示全部楼层

学习一下!!!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lyl537c 发表于 2023-9-19 16:32 | 显示全部楼层

期待下集。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表