发新话题
打印

[讨论]关于php的win32 API模块

[讨论]关于php的win32 API模块

论题提交:我非我[F.S.T]
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

  前几天在疯狂看php手册.
   研究php_win32api模块的时候.发现手册上的那些函数一个都不能用.php提示未定义函数..(w32api_register_function等)
   大汗..仔细看了看.原来此模块的函数只有在4.2.0-4.2.3才有..
   我马上用php内置函数察看了下我机器上php版本的此模块包含的方法.
复制内容到剪贴板
代码:
<?php
print_r(get_extension_funcs("Win32 API"));
?>
结果得到了空数组..
   暴汗.都是个空壳子那php还把这个dll放进来干什么?郁闷了下.去网上php主站察看在线php手册.
   终于看到了别人的讨论.原来php_win32api模块在以后的版本里都是以win32类的形式出现的..
   可手册上没有此类的原形,难道这是个未公布的预定义类?..
   ..继续郁闷了下.把别人讨论里的例子改了改回家测试了下.
如下代码:
复制内容到剪贴板
代码:
<?php
if (!dl("php_w32api.dll")) {
  echo "Unable to load php_w32api.dll";
  exit;
}

$api = new win32;
$api->registerfunction("bool QueryPerformanceCounter (float &lpPerformanceCount) From kernel32.dll");
$api->registerfunction("bool QueryPerformanceFrequency (float &lpPerformanceFrequency) From kernel32.dll");

$api->QueryPerformanceCounter($a);
$api->QueryPerformanceFrequency($b);
$c = $a/$b;
$days = floor($c / 86400);
echo gmstrftime("System uptime is $days Days, %H Hr, %M Min, %S Sec<br>", $c);
?>
从kernel32.dll文件里定义了函数.结果发现在我家apache2.0.18上,一到定义winapi函数原形这里(就是registerfunction方法这里),先是假死,然后就会出错崩溃.
   天啊..我还啥都没干呢..这下我是彻底没辙了.各位牛人.小弟先有礼了.请问大家是否有什么主意?
http://www.phpweblog.net/GaRY/

TOP

>>仔细看了看.原来此模块的函数只有在4.2.0-4.2.3才有

升级到4.2.x以后不就是了?
就看到一直汗啊汗的.主要要说什么没怎么看明白
就是win32api这个模块不能用是吧?
连入侵者都敢说自己在做网络安全。关键大家是真正为安全作过什么?

TOP

的确是不能使用,在以后版本使用win32类。就直接出错。想不到原因。到论坛询问下
http://www.phpweblog.net/GaRY/

TOP

是不是权限不足?
PHP执行WIN32API.我想一定需要至少SYSTEM权限
连入侵者都敢说自己在做网络安全。关键大家是真正为安全作过什么?

TOP

恐怕不像..如果是 那样,那么php就一定会返回错误,说什么不能初始化函数云云.而现在是apache直接崩溃了...再说我的apache本来就是system权限,我没有做过设置..
http://www.phpweblog.net/GaRY/

TOP

用php -q执行看看
大隐于市

TOP

用了php的CLI SAPI 测试了以下,竟然成功了?CGI模式的php.exe在命令行下也成功了.难道是apache的问题?真是奇怪栽也..
哪位兄弟帮忙在iis中测试一下,看看是否有同样情况

附:查看win32类方法和成员属性的代码
复制内容到剪贴板
代码:
<?php

$api = new win32;
$class_methods = get_class_methods(get_class($api));
echo "<br><b>Win32 class methods:</b><br><br>";
foreach ($class_methods as $method_name) {
   echo nl2br("function $method_name()\n");
}
$class_vars = get_class_vars(get_class($api));
echo "<hr><b>Win32 class vars:</b><br><br>";
foreach ($class_vars as $name => $value) {
   echo "$Var name : $value<br/>";
}
?>
http://www.phpweblog.net/GaRY/

TOP

发新话题