此方法的签名是什么?

| 我正在尝试确定Quartz框架的私有api。我有一堆私有私有API的列表,但是没有它们的签名。 我想将其中之一放在桌子上进行讨论,以便我们可以对如何进行反向工程以找到正确的签名有个想法。 void CGContextDrawImages(????); 我是从以下组装中得到的
 _CGContextDrawImages:
    +0  0008986a  55                      pushl       %ebp
    +1  0008986b  89e5                    movl        %esp,%ebp
    +3  0008986d  57                      pushl       %edi
    +4  0008986e  56                      pushl       %esi
    +5  0008986f  53                      pushl       %ebx
    +6  00089870  81ecbc010000            subl        $0x000001bc,%esp
   +12  00089876  e800000000              calll       0x0008987b
   +17  0008987b  5b                      popl        %ebx
   +18  0008987c  8b4508                  movl        0x08(%ebp),%eax
   +21  0008987f  85c0                    testl       %eax,%eax
   +23  00089881  740c                    je          0x0008988f
   +25  00089883  8b4508                  movl        0x08(%ebp),%eax
   +28  00089886  81780854585443          cmpl        $0x43545854,0x08(%eax)
   +35  0008988d  7424                    je          0x000898b3
   +37  0008988f  8b5508                  movl        0x08(%ebp),%edx
   +40  00089892  89542408                movl        %edx,0x08(%esp)
   +44  00089896  8d836ce16f00            leal        0x006fe16c(%ebx),%eax
   +50  0008989c  89442404                movl        %eax,0x04(%esp)
   +54  000898a0  8d8341ae6f00            leal        0x006fae41(%ebx),%eax
   +60  000898a6  890424                  movl        %eax,(%esp)
   +63  000898a9  e8816f0f00              calll       _CGPostError
   +68  000898ae  e9c4120000              jmp         0x0008ab77
   +73  000898b3  8b4510                  movl        0x10(%ebp),%eax
   +76  000898b6  85c0                    testl       %eax,%eax
   +78  000898b8  0f84b9120000            je          0x0008ab77
   +84  000898be  8b450c                  movl        0x0c(%ebp),%eax
   +87  000898c1  85c0                    testl       %eax,%eax
   +89  000898c3  0f84ae120000            je          0x0008ab77
   +95  000898c9  8b7d18                  movl        0x18(%ebp),%edi
   +98  000898cc  85ff                    testl       %edi,%edi
  +100  000898ce  0f84a3120000            je          0x0008ab77
  +106  000898d4  31f6                    xorl        %esi,%esi
  +108  000898d6  31ff                    xorl        %edi,%edi
  +110  000898d8  8b4d10                  movl        0x10(%ebp),%ecx
  +113  000898db  8b04b1                  movl        (%ecx,%esi,4),%eax
  +116  000898de  85c0                    testl       %eax,%eax
  +118  000898e0  740d                    je          0x000898ef
  +120  000898e2  47                      incl        %edi
  +121  000898e3  890424                  movl        %eax,(%esp)
  +124  000898e6  e82f61fbff              calll       0x0003fa1a
  +129  000898eb  85c0                    testl       %eax,%eax
  +131  000898ed  7506                    jne         0x000898f5
  +133  000898ef  46                      incl        %esi
  +134  000898f0  397518                  cmpl        %esi,0x18(%ebp)
  +137  000898f3  75e3                    jne         0x000898d8
  +139  000898f5  85ff                    testl       %edi,%edi
  +141  000898f7  0f847a120000            je          0x0008ab77
  +147  000898fd  397518                  cmpl        %esi,0x18(%ebp)
  +150  00089900  7743                    ja          0x00089945
  +152  00089902  8b4518                  movl        0x18(%ebp),%eax
  +155  00089905  89442418                movl        %eax,0x18(%esp)
  +159  00089909  8b5514                  movl        0x14(%ebp),%edx
  +162  0008990c  89542414                movl        %edx,0x14(%esp)
  +166  00089910  8b4d10                  movl        0x10(%ebp),%ecx
  +169  00089913  894c2410                movl        %ecx,0x10(%esp)
  +173  00089917  8b450c                  movl        0x0c(%ebp),%eax
  +176  0008991a  8944240c                movl        %eax,0x0c(%esp)
  +180  0008991e  8b5508                  movl        0x08(%ebp),%edx
  +183  00089921  8b4234                  movl        0x34(%edx),%eax
  +186  00089924  89442408                movl        %eax,0x08(%esp)
  +190  00089928  8b423c                  movl        0x3c(%edx),%eax
  +193  0008992b  89442404                movl        %eax,0x04(%esp)
  +197  0008992f  8b4218                  movl        0x18(%edx),%eax
  +200  00089932  890424                  movl        %eax,(%esp)
  +203  00089935  e8c264ffff              calll       0x0007fdfc
  +208  0008993a  3dee030000              cmpl        $0x000003ee,%eax
  +213  0008993f  0f85b6110000            jne         0x0008aafb
  +219  00089945  8b7514                  movl        0x14(%ebp),%esi
  +222  00089948  85f6                    testl       %esi,%esi
  +224  0008994a  0f84c4110000            je          0x0008ab14
  +230  00089950  8b5508                  movl        0x08(%ebp),%edx
  +233  00089953  8b4234                  movl        0x34(%edx),%eax
  +236  00089956  890424                  movl        %eax,(%esp)
  +239  00089959  e883d7f9ff              calll       0x000270e1
  +244  0008995e  85c0                    testl       %eax,%eax
  +246  00089960  0f9585bbfeffff          setne       0xfffffebb(%ebp)
  +253  00089967  8b83f1677600            movl        0x007667f1(%ebx),%eax
  +259  0008996d  f30f104004              movss       0x04(%eax),%xmm0
  +264  00089972  f30f118504ffffff        movss       %xmm0,0xffffff04(%ebp)
  +272  0008997a  f30f1008                movss       (%eax),%xmm1
  +276  0008997e  f30f118d00ffffff        movss       %xmm1,0xffffff00(%ebp)
  +284  00089986  f30f104008              movss       0x08(%eax),%xmm0
  +289  0008998b  f30f1185f8feffff        movss       %xmm0,0xfffffef8(%ebp)
  +297  00089993  f30f10480c              movss       0x0c(%eax),%xmm1
  +302  00089998  f30f118dfcfeffff        movss       %xmm1,0xfffffefc(%ebp)
  +310  000899a0  eb1a                    jmp         0x000899bc
  +312  000899a2  f30f108dfcfeffff        movss       0xfffffefc(%ebp),%xmm1
  +320  000899aa  0f2ec8                  ucomiss     %xmm0,%xmm1
  +323  000899ad  7a06                    jp          0x000899b5
  +325  000899af  0f84c2110000            je          0x0008ab77
  +331  000899b5  c685bbfeffff00          movb        $0x00,0xfffffebb(%ebp)
  +338  000899bc  8b4510                  movl        0x10(%ebp),%eax
  +341  000899bf  898524ffffff            movl        %eax,0xffffff24(%ebp)
  +347  000899c5  8b7d0c                  movl        0x0c(%ebp),%edi
  +350  000899c8  8b5514                  movl        0x14(%ebp),%edx
  +353  000899cb  899528ffffff            movl        %edx,0xffffff28(%ebp)
  +359  000899d1  c7852cffffff00000000    movl        $0x00000000,0xffffff2c(%ebp)
  +369  000899db  8d4dc4                  leal        0xc4(%ebp),%ecx
  +372  000899de  898d94feffff            movl        %ecx,0xfffffe94(%ebp)
  +378  000899e4  8b8524ffffff            movl        0xffffff24(%ebp),%eax
  +384  000899ea  8b08                    movl        (%eax),%ecx
  +386  000899ec  85c9                    testl       %ecx,%ecx
  +388  000899ee  0f84e1100000            je          0x0008aad5
  +394  000899f4  0f57c0                  xorps       %xmm0,%xmm0
  +397  000899f7  0f2e4708                ucomiss     0x08(%edi),%xmm0
  +401  000899fb  7a06                    jp          0x00089a03
  +403  000899fd  0f84d2100000            je          0x0008aad5
  +409  00089a03  0f2e470c                ucomiss     0x0c(%edi),%xmm0
  +413  00089a07  7a06                    jp          0x00089a0f
  +415  00089a09  0f84c6100000            je          0x0008aad5
  +421  00089a0f  8b5514                  movl        0x14(%ebp),%edx
  +424  00089a12  85d2                    testl       %edx,%edx
  +426  00089a14  754e                    jne         0x00089a64
  +428  00089a16  f30f108504ffffff        movss       0xffffff04(%ebp),%xmm0
  +436  00089a1e  f30f1145d8              movss       %xmm0,0xd8(%ebp)
  +441  00089a23  f30f108d00ffffff        movss       0xffffff00(%ebp),%xmm1
  +449  00089a2b  f30f114dd4              movss       %xmm1,0xd4(%ebp)
  +454  00089a30  f30f1085f8feffff        movss       0xfffffef8(%ebp),%xmm0
  +462  00089a38  f30f1145dc              movss       %xmm0,0xdc(%ebp)
  +467  00089a3d  f30f108dfcfeffff        movss       0xfffffefc(%ebp),%xmm1
  +475  00089a45  f30f114de0              movss       %xmm1,0xe0(%ebp)
  +480  00089a4a  8b45d4                  movl        0xd4(%ebp),%eax
  +483  00089a4d  8945b4                  movl        %eax,0xb4(%ebp)
  +486  00089a50  8b45d8                  movl        0xd8(%ebp),%eax
  +489  00089a53  8945b8                  movl        %eax,0xb8(%ebp)
  +492  00089a56  8b45dc                  movl        0xdc(%ebp),%eax
  +495  00089a59  8945bc                  movl        %eax,0xbc(%ebp)
  +498  00089a5c  8b45e0                  movl        0xe0(%ebp),%eax
  +501  00089a5f  8945c0                  movl        %eax,0xc0(%ebp)
  +504  00089a62  eb49                    jmp         0x00089aad
  +506  00089a64  8b8528ffffff            movl        0xffffff28(%ebp),%eax
  +512  00089a6a  0f2e4008                ucomiss     0x08(%eax),%xmm0
  +516  00089a6e  7a06                    jp          0x00089a76
  +518  00089a70  0f845f100000            je          0x0008aad5
  +524  00089a76  0f2e400c                ucomiss     0x0c(%eax),%xmm0
  +528  00089a7a  7a06                    jp          0x00089a82
  +530  00089a7c  0f8453100000            je          0x0008aad5
  +536  00089a82  8d55b4                  leal        0xb4(%ebp),%edx
  +539  00089a85  89c1                    movl        %eax,%ecx
  +541  00089a87  8b00                    movl        (%eax),%eax
  +543  00089a89  89442404                movl        %eax,0x04(%esp)
  +547  00089a8d  8b4104                  movl        0x04(%ecx),%eax
  +550  00089a90  89442408                movl        %eax,0x08(%esp)
  +554  00089a94  8b4108                  movl        0x08(%ecx),%eax
  +557  00089a97  8944240c                movl        %eax,0x0c(%esp)
  +561  00089a9b  8b410c                  movl        0x0c(%ecx),%eax
  +564  00089a9e  89442410                movl        %eax,0x10(%esp)
  +568  00089aa2  891424                  movl        %edx,(%esp)
  +571  00089aa5  e8f751fbff              calll       0x0003eca1
  +576  00089aaa  83ec04                  subl        $0x04,%esp
  +579  00089aad  f30f1045c0              movss       0xc0(%ebp),%xmm0
  +584  00089ab2  f30f118518ffffff        movss       %xmm0,0xffffff18(%ebp)
  +592  00089aba  f30f104dbc              movss       0xbc(%ebp),%xmm1
  +597  00089abf  f30f118d14ffffff        movss       %xmm1,0xffffff14(%ebp)
  +605  00089ac7  8b07                    movl        (%edi),%eax
  +607  00089ac9  89442404                movl        %eax,0x04(%esp)
  +611  00089acd  8b4704                  movl        0x04(%edi),%eax
  +614  00089ad0  89442408                movl        %eax,0x08(%esp)
  +618  00089ad4  8b4708                  movl        0x08(%edi),%eax
  +621  00089ad7  8944240c                movl        %eax,0x0c(%esp)
  +625  00089adb  8b470c                  movl        0x0c(%edi),%eax
  +628  00089ade  89442410                movl        %eax,0x10(%esp)
  +632  00089ae2  8b8594feffff            movl        0xfffffe94(%ebp),%eax
  +638  00089ae8  890424                  movl        %eax,(%esp)
  +641  00089aeb  e8b151fbff              calll       0x0003eca1
  +646  00089af0  83ec04                  subl        $0x04,%esp
  +649  00089af3  f30f1045c4              movss       0xc4(%ebp),%xmm0
  +654  00089af8  f30f118508ffffff        movss       %xmm0,0xffffff08(%ebp)
  +662  00089b00  8b75c8                  movl        0xc8(%ebp),%esi
  +665  00089b03  f30f104dd0              movss       0xd0(%ebp),%xmm1
  +670  00089b08  f30f118d10ffffff        movss       %xmm1,0xffffff10(%ebp)
  +678  00089b10  f30f1045cc              movss       0xcc(%ebp),%xmm0
  +683  00089b15  f30f11850cffffff        movss       %xmm0,0xffffff0c(%ebp)
  +691  00089b1d  f30f108518ffffff        movss       0xffffff18(%ebp),%xmm0
  +699  00089b25  f30f1145c0              movss       %xmm0,0xc0(%ebp)
  +704  00089b2a  f30f108d14ffffff        movss       0xffffff14(%ebp),%xmm1
  +712  00089b32  f30f114dbc              movss       %xmm1,0xbc(%ebp)
  +717  00089b37  8b45b4                  movl        0xb4(%ebp),%eax
  +720  00089b3a  89442410                movl        %eax,0x10(%esp)
  +724  00089b3e  8b45b8                  movl        0xb8(%ebp),%eax
  +727  00089b41  89442414                movl        %eax,0x14(%esp)
  +731  00089b45  8b45bc                  movl        0xbc(%ebp),%eax
  +734  00089b48  89442418                movl        %eax,0x18(%esp)
  +738  00089b4c  8b45c0                  movl        0xc0(%ebp),%eax
  +741  00089b4f  8944241c                movl        %eax,0x1c(%esp)
  +745  00089b53  8b45c4                  movl        0xc4(%ebp),%eax
  +748  00089b56  890424                  movl        %eax,(%esp)
  +751  00089b59  8b45c8                  movl        0xc8(%ebp),%eax
  +754  00089b5c  89442404                movl        %eax,0x04(%esp)
  +758  00089b60  8b45cc                  movl        0xcc(%ebp),%eax
  +761  00089b63  89442408                movl        %eax,0x08(%esp)
  +765  00089b67  8b45d0                  movl        0xd0(%ebp),%eax
  +768  00089b6a  8944240c                movl        %eax,0x0c(%esp)
  +772  00089b6e  e823faf7ff              calll       0x00009596
  +777  00089b73  84c0                    testb       %al,%al
  +779  00089b75  7437                    je          0x00089bae
  +781  00089b77  8b9524ffffff            movl        0xffffff24(%ebp),%edx
  +787  00089b7d  8b02                    movl        (%edx),%eax
  +789  00089b7f  f30f108508ffffff        movss       0xffffff08(%ebp),%xmm0
  +797  00089b87  f30f1145c4              movss       %xmm0,0xc4(%ebp)
  +802  00089b8c  8975c8                  movl        %esi,0xc8(%ebp)
  +805  00089b8f  f30f108d10ffffff        movss       0xffffff10(%ebp),%xmm1
  +813  00089b97  f30f114dd0              movss       %xmm1,0xd0(%ebp)
  +818  00089b9c  f30f10850cffffff        movss       0xffffff0c(%ebp),%xmm0
  +826  00089ba4  f30f1145cc              movss       %xmm0,0xcc(%ebp)
  +831  00089ba9  e9fc0e0000              jmp         0x0008aaaa
  +836  00089bae  f30f108508ffffff        movss       0xffffff08(%ebp),%xmm0
  +844  00089bb6  f30f1145c4              movss       %xmm0,0xc4(%ebp)
  +849  00089bbb  8975c8                  movl        %esi,0xc8(%ebp)
  +852  00089bbe  f30f108d10ffffff        movss       0xffffff10(%ebp),%xmm1
  +860  00089bc6  f30f114dd0              movss       %xmm1,0xd0(%ebp)
  +865  00089bcb  f30f10850cffffff        movss       0xffffff0c(%ebp),%xmm0
  +873  00089bd3  f30f1145cc              movss       %xmm0,0xcc(%ebp)
  +878  00089bd8  f30f108d18ffffff        movss       0xffffff18(%ebp),%xmm1
  +886  00089be0  f30f114dc0              movss       %xmm1,0xc0(%ebp)
  +891  00089be5  f30f108514ffffff        movss       0xffffff14(%ebp),%xmm0
  +899  00089bed  f30f1145bc              movss       %xmm0,0xbc(%ebp)
  +904  00089bf2  8b45b4                  movl        0xb4(%ebp),%eax
  +907  00089bf5  89442410                movl        %eax,0x10(%esp)
  +911  00089bf9  8b45b8                  movl        0xb8(%ebp),%eax
  +914  00089bfc  89442414                movl        %eax,0x14(%esp)
  +918  00089c00  8b45bc                  movl        0xbc(%ebp),%eax
  +921  00089c03  89442418                movl        %eax,0x18(%esp)
  +925  00089c07  8b45c0                  movl        0xc0(%ebp),%eax
  +928  00089c0a  8944241c                movl        %eax,0x1c(%esp)
  +932  00089c0e  8b45c4                  movl        0xc4(%ebp),%eax
  +935  00089c11  890424                  movl        %eax,(%esp)
  +938  00089c14  8b45c8                  movl        0xc8(%ebp),%eax
  +941  00089c17  89442404                movl        %eax,0x04(%esp)
  +945  00089c1b  8b45cc                  movl        0xcc(%ebp),%eax
  +948  00089c1e  89442408                movl        %eax,0x08(%esp)
  +952  00089c22  8b45d0                  movl        0xd0(%ebp),%eax
  +955  00089c25  8944240c                movl        %eax,0x0c(%esp)
  +959  00089c29  e81acaf9ff              calll       0x00026648
  +964  00089c2e  84c0                    testb       %al,%al
  +966  00089c30  0f846d010000            je          0x00089da3
  +972  00089c36  80bdbbfeffff00          cmpb        $0x00,0xfffffebb(%ebp)
  +979  00089c3d  0f8583000000            jne         0x00089cc6
  +985  00089c43  8b4508                  movl        0x08(%ebp),%eax
  +988  00089c46  890424                  movl        %eax,(%esp)
  +991  00089c49  e81aaff9ff              calll       0x00024b68
  +996  00089c4e  f30f108518ffffff        movss       0xffffff18(%ebp),%xmm0
 +1004  00089c56  f30f1145c0              movss       %xmm0,0xc0(%ebp)
 +1009  00089c5b  f30f108d14ffffff        movss       0xffffff14(%ebp),%xmm1
 +1017  00089c63  f30f114dbc              movss       %xmm1,0xbc(%ebp)
 +1022  00089c68  8b45b4                  movl        0xb4(%ebp),%eax
 +1025  00089c6b  89442404                movl        %eax,0x04(%esp)
 +1029  00089c6f  8b45b8                  movl        0xb8(%ebp),%eax
 +1032  00089c72  89442408                movl        %eax,0x08(%esp)
 +1036  00089c76  8b45bc                  movl        0xbc(%ebp),%eax
 +1039  00089c79  8944240c                movl        %eax,0x0c(%esp)
 +1043  00089c7d  8b45c0                  movl        0xc0(%ebp),%eax
 +1046  00089c80  89442410                movl        %eax,0x10(%esp)
 +1050  00089c84  8b4508                  movl        0x08(%ebp),%eax
 +1053  00089c87  890424                  movl        %eax,(%esp)
 +1056  00089c8a  e8a75efaff              calll       0x0002fb36
 +1061  00089c8f  8b9524ffffff            movl        0xffffff24(%ebp),%edx
 +1067  00089c95  8b02                    movl        (%edx),%eax
 +1069  00089c97  f30f108508ffffff        movss       0xffffff08(%ebp),%xmm0
 +1077  00089c9f  f30f1145c4              movss       %xmm0,0xc4(%ebp)
 +1082  00089ca4  8975c8                  movl        %esi,0xc8(%ebp)
 +1085  00089ca7  f30f108d10ffffff        movss       0xffffff10(%ebp),%xmm1
08a486 8b4590 movl 0x90(%ebp),%eax  ... 我不希望有确切的答案,而是一种解码签名的方法。任何想法/方向也将有助于进行研究。 感谢您的时间。我真的很感激。     
已邀请:
        通常,您可以从所了解的知识向您所不知道的工作。这很可能用于实现公共CoreGraphics API。如果您可以找到具有已知参数的函数调用此函数,则可以很容易地计算出该函数的参数。 您可以通过查看从堆栈中提取的参数来算出该函数有多少个参数。例如:
   +18  0008987c  8b4508                  movl        0x08(%ebp),%eax
   +21  0008987f  85c0                    testl       %eax,%eax
   +23  00089881  740c                    je          0x0008988f
从中可以看出,第一个参数很可能是32位值。正在针对零进行测试。由于这是一个
CGContext
函数,因此第一个参数几乎可以肯定是
CGContextRef ctx
,因此这三个指令对应于:
if (NULL == ctx) goto L0;
我在程序集中用L0修饰了0x008988f的位置。
   +25  00089883  8b4508                  movl        0x08(%ebp),%eax
   +28  00089886  81780854585443          cmpl        $0x43545854,0x08(%eax)
   +35  0008988d  7424                    je          0x000898b3

if (0x43545854 == ((int *)ctx)[2]) goto L1;
在这里,我们看到了结构成员与某些特殊情况下的已知值的比较。验证上下文的有效性可能是一个魔术数字。目标地址上的代码可能揭示了为什么将其视为特殊字符。
   +37  0008988f  8b5508                  movl        0x08(%ebp),%edx
   +40  00089892  89542408                movl        %edx,0x08(%esp)
void *f0 = *ctx;
这将取消引用上下文指针。如果它是幕后的Obj-C对象,则这将是引用Obj-C类的ѭ7指针。如果不是这样,则上下文可能是某种其他类型的结构,并且代码只是从该结构的最开始就获取了一些数据。在此处设置一个断点并尝试对提供的地址进行“ 8”响应,可以回答其中哪一个是正确的。 (我押注在Obj-C对象的情况下。)
   +44  00089896  8d836ce16f00            leal        0x006fe16c(%ebx),%eax
   +50  0008989c  89442404                movl        %eax,0x04(%esp)
   +54  000898a0  8d8341ae6f00            leal        0x006fae41(%ebx),%eax
太可惜了你停在那里。看起来像是在设置函数调用:将参数粘贴在堆栈上,然后进行调用。您可以看到它从函数的早期开始就基于已知地址抢占了一些重定位的地址(该函数是通过序幕中那个巧妙的
call/pop
技巧找到的)。 我建议您抓住ѭ11的副本–抓住并构建SVN版本,因为它可以处理x86_64。这会做一些前期工作,以帮助您了解反汇编,以及将反汇编很好地格式化为基本块。 还要
class-dump
。这将检查在其上运行的二进制文件的Obj-C段,并为二进制文件中找到的所有类,类别和协议转储Obj-C头文件。 在您感兴趣的二进制文件上运行这两个选项可以极大地帮助您。 如果您愿意为此而努力,则IDA Pro被认为是逆向工程的最佳工具。我从未使用过它,但是我可以看到它会在哪些方面大有帮助。 其他资源: 英特尔ISA文档描述了IA-32和IA-64体系结构及其说明。 《 Mac OS X ABI函数调用指南简介》描述了如何将参数传递给函数。 Rich Wareham的“逆向工程OS X简要教程”对初学者来说很有帮助。 “反向工程OS X”博客中有很多有趣的内容,但是我不知道它对您有多大帮助。 还有一件事:苹果在功能命名方面通常很常规。像
CGContextDrawImages
这样的函数有两个可能的签名,具体取决于图像的传递方式:
/* CGImageRefs contained in a Core Foundation array. */
void CGContextDrawImages(CGContextRef ctx, CFArrayRef images);

/* CGImageRefs passed in a C array. */
void CGContextDrawImages(CGContextRef ctx, CGImageRef images[], size_t count);
可能还会有一个“绘制此位置的”
CGRect
参数或参数数组。但是至少您对函数原型应该是什么并不完全了解。     
        这不是一件容易的事,并且可能需要gdb以外的工具。我阅读了一些有趣的RE教程,即使它们不是特定于OSX的,它们仍然提供了有关解密函数参数的有趣见解和示例: 反转(未记录)Windows API函数 马特的破解指南 逆向工程的秘密:附录C-解密程序数据 通过地址进行逆向工程和函数调用     

要回复问题请先登录注册