PHP程序员学习笔记|如何学习PHP

个人总结的PHP学习方法


PHP反编译出Opcode 看各种语法转为Opcode是什么样子的

2016-9-5 0phpcom 学习笔记


dvld 查OPCODE 手记
<?php
echo 'liwe'

number of ops:  3
compiled vars:  none
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      ECHO                                                     'liwe'
   3     2    > RETURN                                                   1
//-------------------------------------------------------------------------------------------

<?php
$a = ['http://www.0-php.com'=>'1','sb'=>23,23,23,32,32,32,32,23];
foreach($a as $k=>$v){
    echo $v; 
}

function name:  (null)
number of ops:  22
compiled vars:  !0 = $a, !1 = $k, !2 = $v
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      INIT_ARRAY                                       ~0      '1', 'http%3A%2F%2Fwww.0-php.com'
         2      ADD_ARRAY_ELEMENT                                ~0      23, 'sb'
         3      ADD_ARRAY_ELEMENT                                ~0      23
         4      ADD_ARRAY_ELEMENT                                ~0      23
         5      ADD_ARRAY_ELEMENT                                ~0      32
         6      ADD_ARRAY_ELEMENT                                ~0      32
         7      ADD_ARRAY_ELEMENT                                ~0      32
         8      ADD_ARRAY_ELEMENT                                ~0      32
         9      ADD_ARRAY_ELEMENT                                ~0      23
        10      ASSIGN                                                   !0, ~0
   3    11      EXT_STMT                                                 
        12    > FE_RESET                                         $2      !0, ->20
        13  > > FE_FETCH                                         $3      $2, ->20
        14  >   ZEND_OP_DATA                                     ~5      
        15      ASSIGN                                                   !2, $3
        16      ASSIGN                                                   !1, ~5
   4    17      EXT_STMT                                                 
        18      ECHO                                                     !2
   5    19    > JMP                                                      ->13
        20  >   SWITCH_FREE                                              $2
   6    21    > RETURN                                                   1
//-------------------------------------------------------------------------------------------


<?php
$a = ['1',23,23,23,32,32,32,32,23,'http://www.0-php.com'];
for($i=0;$i<count($a);$i++){
    echo $a[$i];
}

function name:  (null)
number of ops:  29
compiled vars:  !0 = $a, !1 = $i
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      INIT_ARRAY                                       ~0      '1'
         2      ADD_ARRAY_ELEMENT                                ~0      23
         3      ADD_ARRAY_ELEMENT                                ~0      23
         4      ADD_ARRAY_ELEMENT                                ~0      23
         5      ADD_ARRAY_ELEMENT                                ~0      32
         6      ADD_ARRAY_ELEMENT                                ~0      32
         7      ADD_ARRAY_ELEMENT                                ~0      32
         8      ADD_ARRAY_ELEMENT                                ~0      32
         9      ADD_ARRAY_ELEMENT                                ~0      23
        10      ADD_ARRAY_ELEMENT                                ~0      'http%3A%2F%2Fwww.0-php.com'
        11      ASSIGN                                                   !0, ~0
   3    12      EXT_STMT                                                 
        13      ASSIGN                                                   !1, 0
        14  >   EXT_FCALL_BEGIN                                          
        15      SEND_VAR                                                 !0
        16      DO_FCALL                                      1  $3      'count'
        17      EXT_FCALL_END                                            
        18      IS_SMALLER                                       ~4      !1, $3
        19      EXT_STMT                                                 
        20    > JMPZNZ                                       18          ~4, ->28
        21  >   POST_INC                                         ~5      !1
        22      FREE                                                     ~5
        23    > JMP                                                      ->14
   4    24  >   EXT_STMT                                                 
        25      FETCH_DIM_R                                      $6      !0, !1
        26      ECHO                                                     $6
   5    27    > JMP                                                      ->21
   6    28  > > RETURN                                                   1
//-------------------------------------------------------------------------------------------
<?php
$a = ['1',23,23,23,32,32,32,32,23,'http://www.0-php.com']; 
$x = 0;
while($x<count($a)) {
    echo $a[$x];
        $x++;
}

function name:  (null)
number of ops:  29
compiled vars:  !0 = $a, !1 = $x
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      INIT_ARRAY                                       ~0      '1'
         2      ADD_ARRAY_ELEMENT                                ~0      23
         3      ADD_ARRAY_ELEMENT                                ~0      23
         4      ADD_ARRAY_ELEMENT                                ~0      23
         5      ADD_ARRAY_ELEMENT                                ~0      32
         6      ADD_ARRAY_ELEMENT                                ~0      32
         7      ADD_ARRAY_ELEMENT                                ~0      32
         8      ADD_ARRAY_ELEMENT                                ~0      32
         9      ADD_ARRAY_ELEMENT                                ~0      23
        10      ADD_ARRAY_ELEMENT                                ~0      'http%3A%2F%2Fwww.0-php.com'
        11      ASSIGN                                                   !0, ~0
   3    12      EXT_STMT                                                 
        13      ASSIGN                                                   !1, 0
   4    14      EXT_STMT                                                 
        15  >   EXT_FCALL_BEGIN                                          
        16      SEND_VAR                                                 !0
        17      DO_FCALL                                      1  $3      'count'
        18      EXT_FCALL_END                                            
        19      IS_SMALLER                                       ~4      !1, $3
        20    > JMPZ                                                     ~4, ->28
   5    21  >   EXT_STMT                                                 
        22      FETCH_DIM_R                                      $5      !0, !1
        23      ECHO                                                     $5
   6    24      EXT_STMT                                                 
        25      POST_INC                                         ~6      !1
        26      FREE                                                     ~6
   7    27    > JMP                                                      ->15
   8    28  > > RETURN                                                   1

//-------------------------------------------------------------------------------------------
<?php
if(1==1){
}

   2     0  >   EXT_STMT                                                 
         1      IS_EQUAL                                         ~0      1, 1
         2    > JMPZ                                                     ~0, ->4
   3     3  > > JMP                                                      ->4
  10     4  > > RETURN                                                   1

//-------------------------------------------------------------------------------------------
<?php
switch(1)
{
    case 1:
    break;
}
function name:  (null)
number of ops:  8
compiled vars:  none
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   NOP                                                      
   4     1      EXT_STMT                                                 
         2      CASE                                             ~0      1, 1
         3    > JMPZ                                                     ~0, ->7
   5     4  >   EXT_STMT                                                 
         5    > BRK                                                      1, ->65
   6     6*     JMP                                                      ->7
  13     7  > > RETURN                                                   1

//-------------------------------------------------------------------------------------------

<?php
a();
function a(){
    echo 'qwe'; 
}

Finding entry points
Branch analysis from position: 0
Return found
filename:       /work/1.php
function name:  (null)
number of ops:  9
compiled vars:  none
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      INIT_FCALL_BY_NAME                                       'a'
         2      EXT_FCALL_BEGIN                                          
         3      SEND_VAL                                                 'name'
         4      DO_FCALL_BY_NAME                              1          
         5      EXT_FCALL_END                                            
   3     6      EXT_STMT                                                 
         7      NOP                                                      
   8     8    > RETURN                                                   1

branch: #  0; line:     2-    8; sop:     0; eop:     8
path #1: 0, 
Function a:
Finding entry points
Branch analysis from position: 0
Return found
filename:       /work/1.php
function name:  a
number of ops:  6
compiled vars:  !0 = $name
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   3     0  >   EXT_NOP                                                  
         1      RECV                                             !0      
   4     2      EXT_STMT                                                 
         3      ECHO                                                     !0
   5     4      EXT_STMT                                                 
         5    > RETURN                                                   null

branch: #  0; line:     3-    5; sop:     0; eop:     5
path #1: 0, 
End of function a.

name%        


<?php
$a = new a();


class a{
    
}

Finding entry points
Branch analysis from position: 0
Return found
filename:       /work/1.php
function name:  (null)
number of ops:  10
compiled vars:  !0 = $a
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   EXT_STMT                                                 
         1      ZEND_FETCH_CLASS                              4  :0      'a'
         2      EXT_FCALL_BEGIN                                          
         3      NEW                                              $1      :0
         4      DO_FCALL_BY_NAME                              0          
         5      EXT_FCALL_END                                            
         6      ASSIGN                                                   !0, $1
   5     7      EXT_STMT                                                 
         8      NOP                                                      
   9     9    > RETURN                                                   1

branch: #  0; line:     2-    9; sop:     0; eop:     9
path #1: 0, 
Class a: [no user functions]



« 关于跨域 | Crowbar:开源暴破工具,支持openvpn,rdp,ssh,vnc»
发表评论:









订阅Rss