亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
123下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4537 | 回復(fù): 24
打印 上一主題 下一主題

[內(nèi)核入門] trampoline.S代碼疑問(wèn)? [復(fù)制鏈接]

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-03-30 14:28 |只看該作者 |倒序?yàn)g覽
本帖最后由 _nosay 于 2016-03-30 16:29 編輯
  1. .code16

  2. ENTRY(trampoline_data)
  3. r_base = .

  4.         mov        %cs, %ax        # Code and data in the same place
  5.         mov        %ax, %ds

  6.         mov        $1, %bx                # Flag an SMP trampoline
  7.         cli                        # We should be safe anyway

  8.         movl        $0xA5A5A5A5, trampoline_data - r_base
復(fù)制代碼
“r_base = .”,這行代碼是什么意思?
“movl $0xA5A5A5A5, trampoline_data - r_base”,0xA5A5A5A5是存到什么位置去了?


寫了一個(gè)測(cè)試程序:
就是在三個(gè)函數(shù)里,都寫一行“r_base = .”,并把r_base值打印出來(lái)。
  1. #include <stdio.h>

  2. int fun1(int n)
  3. {
  4.         long base;

  5.         //printf("0x%x\n", (&n)[-1]);

  6. __asm__(
  7.         "r_base = .\n\t"
  8.         "movl r_base, %0\n\t"
  9.         :"=a"((long)base)
  10.         :"a"(0)
  11.         :
  12.         );

  13.         printf("0x%x\n", (unsigned int)base);

  14.         return 0;
  15. }

  16. int fun2(int n)
  17. {
  18.         long base;

  19.         //printf("0x%x\n", (&n)[-1]);

  20. __asm__(
  21.         "r_base = .\n\t"
  22.         "movl r_base, %0\n\t"
  23.         :"=a"((long)base)
  24.         :"a"(0)
  25.         :
  26.         );

  27.         printf("0x%x\n", (unsigned int)base);

  28.         return 0;
  29. }

  30. int fun3(int n)
  31. {
  32.         long base;

  33.         //printf("0x%x\n", (&n)[-1]);

  34. __asm__(
  35.         "r_base = .\n\t"
  36.         "movl r_base, %0\n\t"
  37.         :"=a"((long)base)
  38.         :"a"(0)
  39.         :
  40.         );

  41.         printf("0x%x\n", (unsigned int)base);

  42.         return 0;
  43. }

  44. int main()
  45. {
  46.         fun1(0);
  47.         fun2(0);
  48.         fun3(0);

  49.         return 0;
  50. }
復(fù)制代碼
打印結(jié)果:
[120] $ ./a.out
0x4841ba1
0x48448a1
0x48475a1

fun2()比f(wàn)un1()多了0x2d00,fun3()比f(wàn)un2()多了0x2d00,請(qǐng)問(wèn)為什么有這樣的規(guī)律,r_base到底是什么?

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
2 [報(bào)告]
發(fā)表于 2016-03-30 16:25 |只看該作者
總感覺(jué)0x4800000挺特別的。

執(zhí)行:
objdump -S a.out | grep 0x48
readelf -a ./a.out | grep 0x48

什么都沒(méi)看到 。

linux2.4.0:arch/i386/kernel/trampoline.S有一段這樣的注釋:
/ *        On entry to trampoline_data, the processor is in real mode
*        with 16-bit addressing and 16-bit data.  CS has some value
*        and IP is zero.  Thus, data addresses need to be absolute
*        (no relocation) and are taken with regard to r_base.
*/

但我還是不知道r_base值具體是什么東西

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
3 [報(bào)告]
發(fā)表于 2016-03-30 16:50 |只看該作者
本帖最后由 _nosay 于 2016-03-30 17:38 編輯
  1. int fun1(int n)
  2. {
  3.         long base, here;

  4.         //printf("0x%x\n", (&n)[-1]);

  5. __asm__(
  6.         "r_base = .\n\t"
  7.         "r_here:movl r_base, %0\n\t"
  8.         "movl r_here, %1\n\t"
  9.         :"=a"((long)base), "=b"((long)here)
  10.         :"a"(0), "b"(0)
  11.         :
  12.         );

  13.         printf("0x%x, 0x%x\n", (unsigned int)base, (unsigned int)here);

  14.         return 0;
  15. }
復(fù)制代碼
base值與here值打印結(jié)果一樣,看來(lái)是緊接著的代碼實(shí)際加載到內(nèi)存的位置,那為什么fun1()、fun2()、fun3()相隔的那么遠(yuǎn),而且還很有規(guī)律?
=在匯編里面用于定義變量,“r_base = .”與“r_base:”等效,可以說(shuō)明匯編里面的標(biāo)號(hào)也是變量嗎?

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
4 [報(bào)告]
發(fā)表于 2016-03-31 10:28 |只看該作者
.是匯編過(guò)程中的概念,可以理解為當(dāng)前code section的相對(duì)偏移。
這些符號(hào)相當(dāng)于自動(dòng)加入了一些label:,是編譯過(guò)程中的常量。
  1. [test]$ cat test.c
  2. void f()
  3. {
  4.         asm("tmp1=.; mov tmp1, %rax");
  5.         asm("tmp2=.; mov tmp2, %rbx");
  6.         asm("tmp3=.; mov tmp3, %rcx; tmp3=.; mov tmp3, %rdx;");
  7. }
  8. [test]$ make test.o
  9. cc    -c -o test.o test.c
  10. [test]$ nm test.o
  11. 0000000000000000 T f
  12. 0000000000000004 t tmp1
  13. 000000000000000c t tmp2
  14. 000000000000001c t tmp3
  15. [test]$ objdump -d test.o

  16. test.o:     file format elf64-x86-64

  17. Disassembly of section .text:

  18. 0000000000000000 <f>:
  19.    0:        55                           push   %rbp
  20.    1:        48 89 e5                     mov    %rsp,%rbp

  21. 0000000000000004 <tmp1>:
  22.    4:        48 8b 04 25 00 00 00         mov    0x0,%rax
  23.    b:        00

  24. 000000000000000c <tmp2>:
  25.    c:        48 8b 1c 25 00 00 00         mov    0x0,%rbx
  26.   13:        00
  27.   14:        48 8b 0c 25 00 00 00         mov    0x0,%rcx
  28.   1b:        00

  29. 000000000000001c <tmp3>:
  30.   1c:        48 8b 14 25 00 00 00         mov    0x0,%rdx
  31.   23:        00
  32.   24:        c9                           leaveq
  33.   25:        c3                           retq  
復(fù)制代碼

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
5 [報(bào)告]
發(fā)表于 2016-03-31 10:30 |只看該作者
本帖最后由 nswcfd 于 2016-03-31 15:03 編輯

0x48...是link之后的結(jié)果(即把相對(duì)偏移轉(zhuǎn)換為絕對(duì)地址) 《==========【更新】這個(gè)解釋是錯(cuò)誤的,是指令本身。

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
6 [報(bào)告]
發(fā)表于 2016-03-31 10:48 |只看該作者
包含ld結(jié)果的例子。
  1. [test]$ cat test.c
  2. void f1()
  3. {
  4.   asm("tmp1=.; mov tmp1, %rax");
  5.   asm("tmp2=.; mov tmp2, %rbx");
  6.   asm("tmp3=.; mov tmp3, %rcx; tmp3=.; mov tmp3, %rdx;");
  7. }
  8. void f2()
  9. {
  10.   asm("myentry=.; nop; nop; mybase=.; movl $0xabcd, myentry-mybase");
  11. }
  12. int main()
  13. {
  14. }
  15. [test]$ make test.o test
  16. cc    -c -o test.o test.c
  17. cc   test.o   -o test
  18. [test]$ objdump -d test.o
  19. 0000000000000000 <f1>:
  20.    0: 55                    push   %rbp
  21.    1: 48 89 e5              mov    %rsp,%rbp
  22. 0000000000000004 <tmp1>:
  23.    4: 48 8b 04 25 00 00 00  mov    0x0,%rax
  24.    b: 00
  25. 000000000000000c <tmp2>:
  26.    c: 48 8b 1c 25 00 00 00  mov    0x0,%rbx
  27.   13: 00
  28.   14: 48 8b 0c 25 00 00 00  mov    0x0,%rcx
  29.   1b: 00
  30. 000000000000001c <tmp3>:
  31.   1c: 48 8b 14 25 00 00 00  mov    0x0,%rdx
  32.   23: 00
  33.   24: c9                    leaveq
  34.   25: c3                    retq   

  35. 0000000000000026 <f2>:
  36.   26: 55                    push   %rbp
  37.   27: 48 89 e5              mov    %rsp,%rbp
  38. 000000000000002a <myentry>:
  39.   2a: 90                    nop   
  40.   2b: 90                    nop   
  41. 000000000000002c <mybase>:
  42.   2c: c7 04 25 fe ff ff ff  movl   $0xabcd,0xfffffffffffffffe
  43.   33: cd ab 00 00
  44.   37: c9                    leaveq
  45.   38: c3                    retq   
  46. 0000000000000039 <main>:
  47.   39: 55                    push   %rbp
  48.   3a: 48 89 e5              mov    %rsp,%rbp
  49.   3d: c9                    leaveq
  50.   3e: c3                    retq   
  51. [test]$ objdump -d test
  52. 0000000000400448 <f1>:
  53.   400448: 55                    push   %rbp
  54.   400449: 48 89 e5              mov    %rsp,%rbp
  55. 000000000040044c <tmp1>:
  56.   40044c: 48 8b 04 25 4c 04 40  mov    0x40044c,%rax
  57.   400453: 00
  58. 0000000000400454 <tmp2>:
  59.   400454: 48 8b 1c 25 54 04 40  mov    0x400454,%rbx
  60.   40045b: 00
  61.   40045c: 48 8b 0c 25 5c 04 40  mov    0x40045c,%rcx
  62.   400463: 00
  63. 0000000000400464 <tmp3>:
  64.   400464: 48 8b 14 25 64 04 40  mov    0x400464,%rdx
  65.   40046b: 00
  66.   40046c: c9                    leaveq
  67.   40046d: c3                    retq   

  68. 000000000040046e <f2>:
  69.   40046e: 55                    push   %rbp
  70.   40046f: 48 89 e5              mov    %rsp,%rbp
  71. 0000000000400472 <myentry>:
  72.   400472: 90                    nop   
  73.   400473: 90                    nop   
  74. 0000000000400474 <mybase>:
  75.   400474: c7 04 25 fe ff ff ff  movl   $0xabcd,0xfffffffffffffffe
  76.   40047b: cd ab 00 00
  77.   40047f: c9                    leaveq
  78.   400480: c3                    retq   
復(fù)制代碼

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
7 [報(bào)告]
發(fā)表于 2016-03-31 13:35 |只看該作者
回復(fù) 6# nswcfd

我是直接編譯成可執(zhí)行文件的,所以已經(jīng)鏈接過(guò)了,但是,fun1的地址是0x8048410,fun1()中的r_base值打印出來(lái)是0x48423a1。

fun1()代碼(原始):
  1. int fun1(int n)
  2. {
  3.         long base, here;

  4.         //printf("0x%x\n", (&n)[-1]);

  5. __asm__(
  6.         "r_base = .\n\t"
  7.         "r_here:movl r_base, %0\n\t"
  8.         "movl r_here, %1\n\t"
  9.         :"=a"((long)base), "=b"((long)here)
  10.         :"a"(0), "b"(0)
  11.         :
  12.         );

  13.         printf("0x%x, 0x%x\n", (unsigned int)base, (unsigned int)here);

  14.         return 0;
  15. }
復(fù)制代碼
fun1()代碼(objdump -d):
  1. 08048410 <fun1>:
  2. 8048410:       55                      push   %ebp
  3. 8048411:       89 e5                   mov    %esp,%ebp
  4. 8048413:       53                      push   %ebx
  5. 8048414:       83 ec 24                sub    $0x24,%esp
  6. 8048417:       b8 00 00 00 00          mov    $0x0,%eax
  7. 804841c:       ba 00 00 00 00          mov    $0x0,%edx
  8. 8048421:       89 d3                   mov    %edx,%ebx

  9. 08048423 <r_here>:
  10. 8048423:       a1 23 84 04 08          mov    0x8048423,%eax
  11. 8048428:       8b 1d 23 84 04 08       mov    0x8048423,%ebx
  12. 804842e:       89 da                   mov    %ebx,%edx
  13. 8048430:       89 45 f0                mov    %eax,-0x10(%ebp)
  14. 8048433:       89 55 f4                mov    %edx,-0xc(%ebp)
  15. 8048436:       8b 55 f4                mov    -0xc(%ebp),%edx
  16. 8048439:       8b 45 f0                mov    -0x10(%ebp),%eax
  17. 804843c:       89 54 24 08             mov    %edx,0x8(%esp)
  18. 8048440:       89 44 24 04             mov    %eax,0x4(%esp)
  19. 8048444:       c7 04 24 88 85 04 08    movl   $0x8048588,(%esp)
  20. 804844b:       e8 a0 fe ff ff          call   80482f0 <printf@plt>
  21. 8048450:       b8 00 00 00 00          mov    $0x0,%eax
  22. 8048455:       83 c4 24                add    $0x24,%esp
  23. 8048458:       5b                      pop    %ebx
  24. 8048459:       5d                      pop    %ebp
  25. 804845a:       c3                      ret
復(fù)制代碼
可執(zhí)行程序打。
0x48423a1, 0x48423a1  // fun1()中打印的r_base、r_here值
0x48466a1
0x48493a1

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
8 [報(bào)告]
發(fā)表于 2016-03-31 13:48 |只看該作者
本帖最后由 _nosay 于 2016-03-31 13:48 編輯

回復(fù) 6# nswcfd

不過(guò)。。

上面的第11、12行:
  1. 8048423:       a1 23 84 04 08          mov    0x8048423,%eax
  2. 8048428:       8b 1d 23 84 04 08       mov    0x8048423,%ebx
復(fù)制代碼
對(duì)應(yīng)的c代碼是:
  1.         "r_here:movl r_base, %0\n\t"
  2.         "movl r_here, %1\n\t"
復(fù)制代碼
證明了你說(shuō)的是對(duì)的,r_base值正是當(dāng)前這條指令的絕對(duì)地址0x8048423,為什么printf()打印出來(lái)的變成0x48423a1了?難道“movl r_base, %0”是將0x8048423處的內(nèi)容放到base變量了嗎?

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
9 [報(bào)告]
發(fā)表于 2016-03-31 13:57 |只看該作者
回復(fù) 6# nswcfd

沒(méi)加$, 。
  1.         "r_here:movl $r_base, %0\n\t"
  2.         "movl $r_here, %1\n\t"
復(fù)制代碼
[120] $ ./a.out
0x8048423, 0x8048423
0x48465a1
0x48492a1

好,一切懸疑都解開(kāi)了 。。

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
10 [報(bào)告]
發(fā)表于 2016-03-31 14:59 |只看該作者
是的,對(duì)一個(gè)label:而言,$label代表的label的地址,label代表的是label執(zhí)行的內(nèi)容,也就是代碼段里的指令。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP