【问题标题】:PHP unpack overlfow variable memory limitPHP解包溢出变量内存限制
【发布时间】:2019-08-17 10:11:22
【问题描述】:

我目前尝试以 hexa 格式回显 DLL 文件的原始字节,解包函数溢出可变内存限制(我的托管服务 atm 无法设置),有什么方法可以将其分部分读取为 3 个或更多变量,或其他方法来输出字节并回显这些?

文件大小约为 1.98MB(1.990.656 BYTES)(是的,我知道 php 中的缓冲区要大得多)。

发生以下错误: 致命错误:允许的内存大小为 67108864 字节已用尽(尝试分配 67108872 字节)

感谢您的帮助。

ini_set('memory_limit', '-1');
$fileName= "driver.dll"; 
$fsize = filesize($fileName); 

$hex = unpack("C*", file_get_contents($fileName));
$hexa_string= "";

foreach($hex as $v) 
{
    $hexa_string.= sprintf("%02X", $v);
}

echo $hexa_string;

【问题讨论】:

标签: php unpack


【解决方案1】:

您必须使用 c 包装器进行文件操作:fseek

$size = 1024 * 1000;
$handle = fopen($file, 'r');
fseek($handle, -$size);
$limitedContent = fread($handle, $size);

【讨论】:

  • 是的,这给了我错误的输出:使用 stringToHex "4D5A90030004000FFFF" 假设:"4D5A90000300000004000000FFFF" 似乎被切断了,我知道为什么
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2012-05-05
  • 2011-06-04
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多