分类目录归档:作品发布

也来弄个NOD32病毒库自动更新代码

偶算是nod32的铁杆粉丝了,一直用这个东东,最近nod32封杀了不少国内的发布免费ID的站点,使IP查找起来比较麻烦了,索性就用官方发布的离线升级包弄个更新服务器,自己用。

官方离线升级包下载地址是:http://www.eset.com.cn/html/download/offline.shtml

用VC写了段代码,自动下载更新包并解压至指定目录,然后指定更新目录为那个目录就好了,建一个计划任务,每天更新一次就实现自动更新了。

以下是简单的代码:

  1. // download.cpp : 定义控制台应用程序的入口点。 
  2. //code By:Neeao 
  3. //http://Neeao.com 
  4.  
  5. #include "stdafx.h" 
  6. #include <windows.h> 
  7. #include <urlmon.h> 
  8.  
  9.  
  10. #pragma comment(lib, "urlmon.lib") 
  11.  
  12.  
  13. int _tmain(int argc, _TCHAR* argv[]) 
  14. {    
  15.  
  16.     HRESULT hr=URLDownloadToFile(NULL,"http://down1.eset.com.cn/eset/offlinev2.rar","d:\\offlinev2.rar",0,NULL); 
  17.      
  18.     SHELLEXECUTEINFO ShExecInfo = {0};  
  19.     ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);  
  20.     ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;  
  21.     ShExecInfo.hwnd = NULL;  
  22.     ShExecInfo.lpVerb = NULL;  
  23.     ShExecInfo.lpFile = "C:\\Program Files\\WinRAR\\RAR.exe"//调用rar 
  24.     ShExecInfo.lpParameters = "e d:\\offlinev2.rar -o+ D:\\offlinev2\\"//执行的命令 
  25.     ShExecInfo.lpDirectory = NULL;  
  26.     ShExecInfo.nShow = SW_SHOW;  
  27.     ShExecInfo.hInstApp = NULL;  
  28.     ShellExecuteEx(&ShExecInfo);  
  29.     WaitForSingleObject(ShExecInfo.hProcess,INFINITE);//等解压缩完毕继续往下执行 
  30.      
  31.     return 0; 

 

PHP eval gzinflate base64_decode str_rot13加密解密

昨天遇到了一个文件用eval(gzinflate(str_rot13(base64_decode(一串解密的,原以为替换eval为echo看下好了,谁知道,还有N层,一怒之下写了这个脚本,直接转换之。顺便弄个了在线版的,省得需要的朋友直接找我了。

以下为源码:

  1. <?php 
  2. /********************************************************************** 
  3. *PHP eval gzinflate base64_decode str_rot13加密解密脚本 By:Neeao 
  4. *目前只写了针对四种组合的,其他组合的可参考注释自行修改: 
  5. *1.eval(gzinflate(str_rot13(base64_decode( 
  6. *2.eval(gzinflate(base64_decode( 
  7. *3.gzinflate(base64_decode(base64_decode(str_rot13( 
  8. *4.eval(gzinflate(base64_decode(str_rot13( 
  9. *Http://Neeao.com 
  10. *2009-09-28 
  11. ***********************************************************************/ 
  12.  
  13. $filename='code.php';//要解密的文件 
  14. $handle = fopen($filename"r"); 
  15. $contents = fread($handlefilesize ($filename)); 
  16. $contents_arr=explode('NeeaoNeeao',htmlspecialchars(decode($contents))); 
  17. echo "此代码被加密了".$contents_arr[0]."层,内容如下:<br>\n"
  18. echo $contents_arr[1]; 
  19.  
  20. /* 
  21. 解密主函数 
  22. $Str,要解密的文件内容 
  23. */ 
  24. function decode($str,$i=0) 
  25.      
  26.     $content=""
  27.     //eval(gzinflate(str_rot13(base64_decode( 
  28.     //先正则查找是否相关组合加密的,base64编码后的正则是:[A-Za-z0-9\/\+=] 
  29.     if(preg_match("/(eval\(gzinflate\(str_rot13\(base64_decode\(')([A-Za-z0-9\/\+=]*)'/",$str,$x)) 
  30.     {    
  31.         //替换掉没用的字符,获取加密后的密文 
  32.         $content=str_replace("eval(gzinflate(str_rot13(base64_decode('","",$x[0]); 
  33.         $content=str_replace("'","",$content); 
  34.         //变量i是用来判断加密层数的,初始值为0,解密一次,层数加一 
  35.         $i++; 
  36.         //采用相关组合解密 
  37.         $content=gzinflate(str_rot13(base64_decode($content))); 
  38.         //递归判断下是不是已经结束了,没结束继续重复解密 
  39.         $content=decode($content,$i); 
  40.     } 
  41.     //eval(gzinflate(base64_decode( 
  42.     elseif(preg_match("/eval\(gzinflate\(base64_decode\('[A-Za-z0-9\/\+=]*'/",$str,$y)) 
  43.     {    
  44.          
  45.         $content=str_replace("eval(gzinflate(base64_decode('","",$y[0]); 
  46.         $content=str_replace("'","",$content); 
  47.         $i++; 
  48.         $content=gzinflate(base64_decode($content)); 
  49.         $content=decode($content,$i); 
  50.     } 
  51.     //gzinflate(base64_decode(base64_decode(str_rot13( 
  52.     elseif(preg_match("/eval\(gzinflate\(base64_decode\(base64_decode\(str_rot13\('[A-Za-z0-9\/\+=]*'/",$str,$z)) 
  53.     { 
  54.         $content=str_replace("eval(gzinflate(base64_decode(base64_decode(str_rot13('","",$z[0]); 
  55.         $content=str_replace("'","",$content); 
  56.         $i++; 
  57.         $content=gzinflate(base64_decode(base64_decode(str_rot13(($content))))); 
  58.         $content=decode($content,$i); 
  59.     } 
  60.     //eval(gzinflate(base64_decode(str_rot13( 
  61.     elseif(preg_match("/eval\(gzinflate\(base64_decode\(str_rot13\('[A-Za-z0-9\/\+=]*'/",$str,$m)) 
  62.     { 
  63.         $content=str_replace("eval(gzinflate(base64_decode(str_rot13('","",$m[0]); 
  64.         $content=str_replace("'","",$content); 
  65.         $i++; 
  66.         $content=gzinflate(base64_decode(str_rot13(($content)))); 
  67.         $content=decode($content,$i); 
  68.     } 
  69.     else 
  70.     { 
  71.         $content=$i."NeeaoNeeao".$str
  72.     } 
  73.     return $content
  74.      
  75. ?> 

在线版地址:http://neeao.com/tools/decode/index_eval.php

一个PHP webshell检查shell脚本

昨天晚上电脑里翻东西翻出来的,2008/7/17写的。

  1. #!/bin/sh 
  2. #************************************************************ 
  3. #WebShell Check Shell for PHP 
  4. #By:Neeao 
  5. #2008/7/17 v1.0 beta  
  6. #************************************************************ 
  7. HOSTIP=`ifconfig eth0 |grep 'inet addr'|awk '{print $2;}'|cut -d: -f2` 
  8. #STR=`expr index $HOSTIP "192.168"` 
  9. #if [ ${STR} -eq 1 ]  
  10. #        then 
  11. #                HOSTIP=`ifconfig eth1 |grep 'inet addr'|awk '{print $2;}'|cut -d: -f2` 
  12. #fi 
  13. echo $HOSTIP 
  14. LogFile=/tmp/$HOSTIP.log 
  15. rm -rf $LogFile 
  16. date +%Y-%m-%d/%H:%M >> $LogFile  
  17. echo -e "\n" >> $LogFile  
  18. echo " ---------------------------------------------------------------------------------------------------" >> $LogFile  
  19. echo "|Executive Order function:exec(\|system(\|passthru(\|shell_exec(\|popen(\|proc_open(\|pcntl_exec(  |" >> $LogFile  
  20. echo " ---------------------------------------------------------------------------------------------------" >> $LogFile  
  21. echo -e "\n" >> $LogFile 
  22. grep -in 'exec(\|system(\|passthru(\|shell_exec(\|popen(\|proc_open(\|pcntl_exec(' -R * | grep -iv '_exec' >> $LogFile 
  23. echo -e "\n" >> $LogFile 
  24. echo " -------------------------------------------------------------------------------------------" >> $LogFile 
  25. echo "|Deformation of the back door coding:eval(\|base64_decode(\|gzinflate(\|gzuncompress(\|chr( |" >> $LogFile 
  26. echo " --------------------------------------------------------------------------------------------" >> $LogFile 
  27. echo -e "\n" >> $LogFile 
  28. grep -in "eval(\|base64_decode(\|gzinflate(\|gzuncompress(\|chr(" -R * >> $LogFile 
  29. echo -e "\n" >> $LogFile 
  30. echo " -----------------------------------------------------------------------------------------------------------------" >> $LogFile   
  31. echo "|File operations function:dl(\|fopen(\|readfile(\|file(\|file_get_contents(\|opendir(\|chdir(\|fwrite(\|unlink(\|glob(|" >> $LogFile   
  32. echo " -----------------------------------------------------------------------------------------------------------------" >> $LogFile   
  33. echo -e "\n" >> $LogFile 
  34. grep -in "dl(\|fopen(\|readfile(\|file(\|file_get_contents(\|opendir(\|chdir(\|fwrite(\|unlink(\|glob(" -R * >> $LogFile 
  35. echo -e "\n" >> $LogFile 
  36. echo "----------------------------------" >> $LogFile 
  37. echo "|Files inculde bug:include|require|" >> $LogFile 
  38. echo "----------------------------------" >> $LogFile 
  39. echo -e "\n" >> $LogFile 
  40. grep -in "include.*\$.\|require.*\$." -R * >> $LogFile 
  41. echo -e "\n" >> $LogFile 
  42. echo "---------------------------------------------------------" >> $LogFile 
  43. echo "|Risk code Keyword:SQLyog\|phpAdsNew\|huansuan\|fckeditor|" >> $LogFile 
  44. echo "--------------------------------------------------------" >> $LogFile 
  45. echo -e "\n" >> $LogFile 
  46. grep -in "SQLyog\|phpAdsNew\|huansuan\|fckeditor" -R * >> $LogFile 
  47. cd /tmp 
  48. tar -zcvf $HOSTIP.tar.gz $HOSTIP.log 

 

微盾PHP脚本加密专家解密算法

今天工作中某合作商拿过来代码让检查安全,一看代码加密了,比较汗,类似下面代码:

  1. <?php // This file is protected by copyright law & provided under license. Copyright(C) 2005-2009 www.vidun.com, All rights reserved. 
  2. $OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=28;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMjU5KTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDM4MCksJ0VudGVyeW91d2toUkhZS05XT1VUQWFCYkNjRGRGZkdnSWlKakxsTW1QcFFxU3NWdlh4WnowMTIzNDU2Nzg5Ky89JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?> 
  3. kr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXPkr9NTzEXHenNHtILT08XT08XHr8XhtONTznNTzEXHr8Pkr8XHenNHr8XHtXLT08XHr8XHeEXhUXmOB50cbk5d3a3D2iUUylRTlfNaaOnCAkJW2YrcrcMO2fkDApQToxYdanXAbyTF1c2BuiDGjExHjH0YTC3KeLqRz0mRtfnWLYrOAcuUrlhU0xYTL9WAakTayaBa1icBMyJC2OlcMfPDBpqdo1Vd3nxFmY0fbc3Gul6HerZHzW1YjF4KUSvkZLphUL7cMYSd3YlhtONHeEXTznNHeEpK2a2CBXPkr9NHenNHenNHtL7eWplC2ivwunPFolVcM8PhTSYtI== 

很明显,是使用了某种PHP代码混淆工具混淆了下,Google一把,原来是使用的微盾PHP脚本加密专家加密的,网上搜了下,没找到免费的解密工具,于是乎,自己就研究了下,写了个解密算法,share下,给遇到同样问题的朋友一个方便。

       另外需要说明的是,我测试,本地解密出来的代码可以阅读的,由于代码混淆过,可能还原出来的有些地方和原代码有出入,有需要可自行修改之。

更新:

2009-09-16

添加了自动获取要截取的字符串长度,更通用了。

  1. <?php 
  2. /*********************************** 
  3. *威盾PHP加密专家解密算法 By:Neeao 
  4. *http://Neeao.com 
  5. *2009-09-10 
  6. ***********************************/ 
  7.  
  8. $filename="play-js.php";//要解密的文件 
  9. $lines = file($filename);//0,1,2行 
  10.  
  11. //第一次base64解密 
  12. $content=""
  13. if(preg_match("/O0O0000O0\('.*'\)/",$lines[1],$y)) 
  14.     $content=str_replace("O0O0000O0('","",$y[0]); 
  15.     $content=str_replace("')","",$content); 
  16.     $content=base64_decode($content); 
  17. //第一次base64解密后的内容中查找密钥 
  18. $decode_key=""
  19. if(preg_match("/\),'.*',/",$content,$k)) 
  20.     $decode_key=str_replace("),'","",$k[0]); 
  21.     $decode_key=str_replace("',","",$decode_key); 
  22. //查找要截取字符串长度 
  23. $str_length=""
  24. if(preg_match("/,\d*\),/",$content,$k)) 
  25.     $str_length=str_replace("),","",$k[0]); 
  26.     $str_length=str_replace(",","",$str_length); 
  27. //截取文件加密后的密文 
  28. $Secret=substr($lines[2],$str_length); 
  29. //echo $Secret; 
  30.  
  31. //直接还原密文输出 
  32. echo "<?php\n".base64_decode(strtr($Secret,$decode_key,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'))."?>"
  33.  
  34. ?> 

 

命令行驱动加载小工具

这两天在捣鼓开发驱动,调试过程要加载驱动,网上找了几个使用着都不符合自己的习惯,于是乎自己网上找了代码,修改了下,改了一个命令行版的。

使用方法:

  1. C:\wdk>Driver.exe 
  2. 命令行驱动加载工具 By:Neeao 
  3. Http://Neeao.com 
  4. 使用方法: 
  5.         Driver.exe -start 安装的驱动名 
  6.         Driver.exe -stop 安装的驱动名 
  7.         Driver.exe -unload 安装的驱动名 
  8.         Driver.exe -load 安装的驱动名 驱动路径 

卸载功能使用的时候,无需停止驱动后再卸载,可直接卸载,如果停止驱动后再卸载的话,会爆出一个1062的错误,无需理会,一样可以卸载成功的。

下载

某进程资源占有率查看器

一直想找这么个工具,可以查看指定进程的CPU占有率、内存占有率、IO情况等。Sysinternals Process Explorer有这个功能,不过是图表显示的,有时候看着不方便,于是自己写了这个小工具,来实时查看某进程的CPU占有率等。

     程序说明:

    1.开发环境:Windows xp sp2+VC7.1

    2.使用方法:

  1. E:\VC7.1\process\Release>process.exe 
  2. ------------------------------- 
  3. 某进程资源占有率查看器 By:Neeao 
  4. http://neeao.com 
  5. 使用方法: 
  6. process.exe 进程ID 
  7. ------------------------------- 

process.jpg

下载