XTrap保护中的IDTHOOK恢复

最近比较懒什么东西都没学。研究了两天传说中的三大游戏保护中的一个,叫XTrap.据说是三个保护中最弱的一个。但是能力有限,还是没有过掉保护。哎,失败。不过从中学到了点知识。留个记录。
XTrap保护在驱动里用SSTD HOOK了NtDeviceIoControlFile,NtOpenProcess,NtOpenSection
NtProtectVirtualMemory 等几个API. Shadow SSDT也HOOK了 NtUserFindWindowex
NtUserSetWindowsHookEx等几个API。他还在应用层也HOOK了一些仿调试函数。这些防护可以通过简单的恢复来绕过。

如何精确查找PHP WEBSHELL木马?

上篇提到了关于网上流传查找PHP webshell的python脚本中,不严谨的代码并且给出了一个python的检测代码,同时,下文里也提到不能检测到反引号的命令执行的地方。今天,我想了下,现在把思路发出来。正则表达式该如何写?
分析:对于可移植性的部分共同点是什么?与其他正常的包含反引号的部分,区别是什么?
他们前面可以有空格,tab键等空白字符。也可以有程序代码,前提是如果有引号(单双)必须是闭合的。才是危险有隐患的。遂CFC4N给出的正则如下:【(?:(?:^(?:\s+)?)|(?:(?P<quote>["'])[^(?P=quote)]+?(?P=quote)[^`]*?))`(?P<shell>[^`]+)`】。

关于网上流传查找PHP webshell的python脚本中,不严谨的代码

不是闲着蛋疼,也不是批评谁,只是不忍心看到不严谨的代码在网上被疯传,误导初学者。以下引用的代码以及思路来自网络,只针对代码,不针对人。如有雷同,纯属巧合。
来自某大牛python版本的检测服务器上PHP代码中webshell的脚本代码片段如下:
findtype=['.php','.inc'] #要检查的文件后缀类型
keywords=[ ["eval\(\$\_POST","发现PHP一句话木马!"], ["(system|shell_exec|exec|popen)","发现PHP命令执行函数!"]]
然后,接着是python处理上面列表(数组),把每个列表的第一个元素作为正则表达式内容,然后进行匹配处理的。先看第一个检测“PHP一句话木马”的这个正则。【eval\(\$\_POST】这里转义了字符【_】,字符“_”不是元字符,不需要转义的,其实,转义也无妨,聪明的正则表达式引擎会识别修正的。来说下这个思路的遗漏之处。这里仅仅匹配字符串“eval(”后面的变量“$_POST”,如果是“$_GET”呢?如果是“$_REQUEST”呢?如果程序先把$_POST/$_GET/$REQUEST的key的变量先赋值给一个自定义的变量名,然后在用PHP的“eval”函数执行这个变量呢?是不是就查找不到了?其实,并不需要知道“eval”函数执行的变量名是什么,只要查找“eval(”即可,当然,还要注意“eval”函数后面可以有空格,tab键之类空白字符。上面的代码片段中,也没考虑到这一点。

snoopy.class.php中_striplink方法的正则分析

对于已经习惯8点左右起床上班的我来说,生物钟在早上8点左右,准时醒,有时候想赖床,但也无法再次入睡。起床洗漱,打开电脑,玩了两局web的三国杀,逛逛论坛,觉得饿了,才去煮点面条吃。回来继续,无意中打开PPC,看到一位网友“落叶人生”同学的帖子问一个正则问题,纠结了一下是否解释一下,以便给对方释疑解惑,也加固自己的知识。犹豫半天,觉得还是写下吧。下面正题:

PPC链接http://bbs.phpchina.com/thread-189797-1-1.html

preg_match_all(“‘<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)‘isx”,$document,$links);
对于一般的规范链 接能很好的使用,但不知道为什么对href=后面的网址不含引号的情况无法提取成功,哪个朋友帮分析下?谢谢!

其实,我没明白他的意思是想提取链接地址href后面的内容的,还是提取整个标签a中间的所有。

在下面的回帖中,他提到了这个正则来自snoopy.class.php的_striplink方法中的正则,遂到sf.net上下载一份原版到本地。

周末记事-还是我的老爷机


06年买的主机箱+飞利浦CRT显示器,07年更换电源风扇,08年上半年分别更换了主板,硬盘,下面年,在内存最低价的时候,99块包快递买了DDR2 667的内存条一根,更新了老内存。09年再次更换了电源风扇,10年由于换地方住,搬家,桌子太靠墙,CRT大屁股显示器放不下,买了优派的22寸液晶显示器,鸟枪换炮了,哈。CRT显示器忍痛割爱以50元的价格卖给了小贩,哎,心痛。接着,鼠标又不灵了,更换了鼠标。从06年坚守到现在的器件只有CPU、主机箱、显卡,光驱、键盘了。昨天晚上,10点半左右,老爷机又突然间罢工了,顿时,我心急如焚呀,心想即将到来的周末,作为宅男,我不能接受。赶紧调试吧。首先,我以为是天气太热,导致CPU温度过高,激活主板自动保护策略,强制关机的。赶紧把CPU风扇拿出来,放到空调边吹了会,装上去之后,开机,还是不行,主板灯亮了,但是CPU风扇不转,而且,电源也没反映,我愕然了,难道电源又坏了不成?好吧,我认输,周末再说吧,睡觉。

SSDT HOOK


这是我写的第一个驱动程序,呵呵。虽然烂了点,但是有纪念意义。放在这里留个纪念,这个程序用到了,SSDTHOOK 应用程序和驱动程序
通信等知识,代码比较凌乱。
先简单说一下SSDT HOOK。应用程序的API在使用的时候要调用系统的低层的API,那么系统如何找到对应的API呢?在系统里有一张表。
System Services Descriptor Table,系统服务描述符表。在这个表里就有各种系统API的地址,我们只要把这些地址改成我们自己函数的地址。那么结果大家可想而知了,系统就会调用我们的API了。道理就是这么简单。

PHP中正则表达式对UNICODE字符码的匹配


我们在来分析一下这个网友写的正则表达式【[chr(128)-chr(256)]+】,正则表达式的PCRE引擎是如何解释这个正则的呢?首先,我们要知道,在正则表达式中,中括号【[]】表示字符组,字符组中除了连接符【-】只外,都不是元字符,也就是说,都是普通字符,当然,如果连字符出现在第一个,或者不是标识两个字符之间范围的,都是普通的字符横杠“-”罢了。这里的chr(128)只是标识ASCII码为128(确切的说,ASCII码只是0-127个,128到其他的,应该不叫ASCII码了。),但是在正则里,他仍然代表【c、h、r、(、1、2、8、)】(顿号不是,只是区分易读的)这八个字符罢了。这个正则里的连接字符,是哪些范围呢?很明显,这里的连接字符的范围是【)-c】,“)”ASCII码为0×29,也就是十进制的41;“c”的ASCII码为0×63,也就是十进制的99,那么,他这个连接字符的范围就是ASCII 41(chr(41))到ASCII 99(chr(99))之间的字符。

发现个好玩的代码改写MBR


前几天看关于mbr被改写,导致无法进入主引导项,只能看到mbr显示的东西。而且,重装系统也不会重写mbr部分的引导。只能通过DOS里执行fdisk /mbr来清除掉,然后重写才能完成。今天,闲着没事,写了代码,小试一下。

LO**网购物小记


上上上周,也就是6月11号左右,温度比较高,偶尔小雨,天气阴沉,适合蚊子生长繁殖,蚊虫很多,夜里,疯狂的咬俺。遂到LO**网站淘了一番,最终选择一款蚊帐,加1块钱送了个凉席药物枕头,送了个小闹钟。心想,过2-3天肯定送到,再晚也就4-5呗,都在上海,结果,一个星期,两个星期过去了,还没送到。今天早上,听到门铃声,正在猜想这会是谁按的呢?快递?我没买东西啊。。。开了门之后,才知道N天前网购的蚊帐送来了。赶紧付款,拿货。打开之后,我无语了。好漂亮的闹钟。下面上图。

eval、gzinflate、 base64_decode三函数加密的代码在线解密


其实,这边日志的主题不是想写被eval、gzinflate、 base64_decode三函数加密的代码的在线解密的。主要写生活中的两三件事。

其一,刘威同学生了个儿子,在这里恭喜一下。俺又多了个侄子,年底回家,连他结婚的喜酒,跟小侄子的见面礼一并给了。(此人已经生子,还未结婚,大家一起来鄙视一下,当然,你也可以羡慕一下。)

二,前天下午听姐姐说晚上跟今天早上,还有中午打电话回家,都没人接听。我听了之后,有点心慌,也假装镇定到下班回家,先是打了电话到大姐家,接电话的是外甥,其也说也曾经尝试了几次,也是没接通,然后,决定明天去我父母家看望一下(中考完毕),顺便带点农副产品。我听了之后,却愈加担心,也有点欣慰。担心的是家里的电话为什么没人接,欣慰的是外甥很懂事了,也很孝顺他的姥姥,也就是我的父母。接着,我又尝试几遍,仍未有响应。又打了一通电话,后得知家里电话坏了,才放下心来。继续坚持每周一个电话回家。

第 1 页,共 21 页123451020...最旧 »