郁闷的cookie

10 10 月, 2011

不多说,上聊天记录:

总结一下:
一个站点的页面如果调用另一个站点的页面设cookie,该站点的cookie中是没有该cookie的。所以本地的页面,或者架了服务器host没配,都是这种情况哦?

shop.xxx.com的登录页应该是在shop.xxx.com这个站点上,它请求verify2.xxx.com去获取验证码,并设cookie,为什么就能设呢?
shop.xxx.com和verify2.xxx.com这不也是垮站点cookie?
本地页面和verify2.xxx.com为什么就不能设cookie成功呢?
xxx.com   那应该是
这个一样就可以
原来如此,浏览器只认一级域名
而不管服务器是不是分布的

javascript 中cookie的存储,获取cookie,删除cookie的方法。

GetKeyState的疑惑

9 10 月, 2011
#include "stdafx.h"
#include <Windows.h>
int main()
{
    int i = 0;
    while(1)
    {
        if(GetKeyState('A') < 0)
        {
            //VK_CONTROL
            //printf("Ctrl down: %d!\n", ++i);
            printf("A down: %d!\n", ++i);
        }
        //Sleep(1000);
    }
    return 0;
}

用GetKeyState来截获密码等好像不太实际,如果在死循环中Sleep就可能漏掉信息,如果不Sleep你会发现按一次键能得到N次这个键的信息。

疑惑是GetKeyState好像取不到WH_KEYBOARD_LL Hook后的键信息?

IObjectSafety IObjectSafetyImpl

9 10 月, 2011

浏览器与ActiveX控件交互时会弹出警告,去掉它必须实现IObjectSafety接口。当一个ActiveX实现了该接口时就是声明了它是安全的,那么用户因为使用此控件造成的损失应该由此控件厂商承担,所以还是谨慎的好。

关于IObjectSafety的更多资料,参考:

再谈IObjectSafety

ATL中实现IObjectSafety接口,只需要继承IObjectSafetyImpl即可,详细资料参考:

如何为初始化 IObjectSafety 标记 ATL 控件安全

这篇参考资料的ATL版本比较低,但大体是对的,在新的ATL中有如下地方需要改动:

继承时使用:public IObjectSafetyImpl<CXLSafeEditWrap, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>

COM MAP中使用:COM_INTERFACE_ENTRY(IObjectSafety)

VMware的杯具

7 10 月, 2011

Win7下使用VMware 6是个杯具,因为网络环境很难配,而且会出现各种各样的问题。无奈,不挣扎了,卸载,准备装VMware 7。

卸载VMware 6更是一个杯具,因为VMware有键盘相关的驱动,卸载后重启,发现键盘失效了!!!

百度之,发现遇到这类问题的人不少,解决方案就是去掉VMware的键盘驱动:

VMware卸载后键盘失灵的解决方案

VMWare安装、卸载异常导致键盘失灵(代码19)

杯具的是我没有外接键盘,更杯具的是我开机有密码!!!这样,连Win7系统都登录不上去,怎么修改注册表?

好吧,只能使用WinPE试试了:

老毛桃winpe_U盘装系统图解

利用WINPE修改本机系统注册表

修改完毕,键盘可以使用了,装上VMware 7虚拟机也能上网了,希望下次卸载7的时候不会出现这问题……(::>_<::)

aliedit

28 9 月, 2011

最近有需要研究下支付宝的密码控件,即aliedit。谷歌百度之,发现还有驱动级别的(::>_<::)。自己动手,丰衣足食。
先看下支付宝的登录源码,其中有这样一段:alipay

OK,载体是一个ActiveX控件。不用浏览器安装这个ActiveX控件,直接从官网上下载aliedit.exe。
使用Universal Extractor将安装包解包,发现其中只有dll,看来并没有网上所说的驱动了(后面使用工具反复找也没找到驱动模块的痕迹)。
在Ring3的aliedit是如何处理键盘消息并防止被hook键盘消息的呢?
使用spy++捕捉支付宝页面的键盘消息,发现就只有aliedit控件处的键盘消息是无法捕捉到的,怀疑也是hook。
于是用工具找找hooks看,出于意料的是QQ管家、spy++等的hooks都被检查出来了,aliedit却没有(囧rz),只能看看其内部实现了。

直接用IDA打开发现IDA报警告,分析出的代码含UPX节,可能是加壳了。PEiD查壳果然,用UPX脱之,不费力。
在IDA的Imports中果然找到了SetWindowsHookEx和UnhookWindowsHookEx的引用,主要就是分析引用它们的例程了,分别是offset 0x936D和offset 0x93BC。

.text:100093A1 push 0 ; dwThreadId
.text:100093A3 push eax ; hmod
.text:100093A4 push offset fn ; lpfn
.text:100093A9 push 0Dh ; idHook
.text:100093AB call ds:SetWindowsHookExA

是一个全局的低级键盘钩子,奇怪的是我用工具没找到它的踪影——要么应该在工具中列出该钩子,要么在运行aliedit之后运行的进程中会有aliedit.dll模块。

IDA具体的分析如下:aliedit.idb(附件太大就不传了)

这里我只说说为什么会找不到aliedit的钩子。
先用OD附加打开了支付宝登录页面的IE,查看—>可执行模块中找到aliedit.dll的路径(C:\WINDOWS\system32\aliedit\2.5.0.3\aliedit.dll),用脱壳后的文件替换,然后再如上附加。
查看—>可执行模块中找到aliedit.dll的基址(07780000),查看—>内存中找到aliedit.dll的基址处,在代码节下断,然后运行。程序很快就会在aliedit.dll的领空断下来。
在0778936D(引用SetWindowsHookEx的例程)和077893BC(引用UnhookWindowsHookEx的例程)处下断,运行,总结:
aliedit控件获得焦点时会SetWindowsHookEx,反之,失去焦点时会UnhookWindowsHookEx。注意这里是aliedit控件,不是整个alipay的页面或IE。
这就解释了为什么用一般工具找不到它的hook了。

补充一个调用aliedit的测试页面:aliedit_test.html