“Windows”目录存档

AptEdit是中国人写的

2009年10月17日,星期六

就是作者搞笑了点

ps 发现一个不错的贴http://post.baidu.com/dwing 和一个牛人 http://wex.cn/dwing/mydemo.htm 凡是写demo的都是大牛。

等价cmd /cstart的命令

2009年10月2日,星期五

execv不一样的是,cmd里的start命令可以打开网址(用系统默认浏览器),shell namespace里的object,和HKLMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion下的程序启动键值。

下面贴一个等效命令,可以不弹cmd窗口。

rundll32 url.dll,FileProtocolHandler "http://initiative.yo2.cn/"

rundll32 url.dll,FileProtocolHandler "shell:cookies"

很老了,还是mark一下。

Google Chrome Frame

2009年09月23日,星期三

Ahhhhh, fuck. Google推出了Chrome Frame

其实就是一个特殊版本的Chrome,里面包含了一个npchrome_tab.dll

注册了一个CF:这样的Asynchronous Pluggable Protocols到IE,然后嵌入一个ActiveX的Chrome引擎代替IE来layout和javascript。目前还没有去测试cookie啊XSS啊XSRF特性,不过:

cf:javascript:alert(/fuck chrome/)

这个似乎没用。

注意看上面的截图,地址栏里显示的是cf:http://g.cn。说明什么?说明我们很方便地址栏钓鱼了。因为301/302跳转显示没变。

目前还发现一个问题就是cf:https://gmail.com 似乎没用。但是测试了下其他https网站似乎可用。

Google官方给出了一个CFInstall.js来探测Chrome Frame是否可用。

大概就是var obj = new ActiveXObject('ChromeTab.ChromeFrame'); 这一句了。

npchrome_tab.dll定义了几个导出函数:

CfLaunchChrome
NP_GetEntryPoints
NP_Initialize
NP_Shutdown
RegisterNPAPIPlugin
UnregisterNPAPIPlugin

测试了下 rundll32 npchrome_tab.dll, CfLaunchChrome 可以启动 Chrome。不过把NPAPI引入IE会导致n多安全问题吧?

下面贴一个npchrome_tab.dll里的typelib:

ChromeTabLib; // ChromeTab 1.0 Type Library

Dispatch DIChromeFrameEvents;
GUID={A96B8A02-DD11-4936-8C0F-B2520289FABB};
function onload;
function onloaderror;
function onmessage(event:IDispatch);
function onreadystatechanged;
function onprivatemessage(event:IDispatch; target:BSTR);

Class HtmlFilter;
GUID={BB1176EE-20DD-41DC-9D1E-AC1335C7BBB0};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class ChromeProtocol;
GUID={9875BFAF-B04D-445E-8A69-BE36838CDE3E};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class ChromeActiveDocument;
GUID={3E1D0E7F-F5E3-44CC-AA6A-C0A637619AB8};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);

Dispatch IChromeFrame; // IChromeFrame Interface
GUID={B9F5EA20-C450-4F46-B70F-BFD3CA9A20C5};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);

Class ChromeFrame;
GUID={E0A900DF-9611-4446-86BD-4B1D47E7DB2A};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get src: BSTR;
property-put src(BSTR);
function postMessage(message:BSTR; [target:variant]);
property-get onload: variant;
property-put onload(variant);
property-get onloaderror: variant;
property-put onloaderror(variant);
property-get onmessage: variant;
property-put onmessage(variant);
property-get readyState: I4;
function addEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
function removeEventListener(event_type:BSTR; listener:IDispatch; [use_capture:variant]);
property-get version: BSTR;
function postPrivateMessage(message:BSTR; origin:BSTR; target:BSTR);
property-get useChromeNetwork: bool;
property-put useChromeNetwork(bool);
function onload;
function onloaderror;
function onmessage(event:IDispatch);
function onreadystatechanged;
function onprivatemessage(event:IDispatch; target:BSTR);

Class ChromeFrameBHO;
GUID={ECB3C477-1A0A-44BD-BB57-78F9EFE34FA7};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

问了下#chromium里的人,他们说源码还没公开。看得出来CF只是为了借Wave推广Chrome的一个小聪明。总体感觉Chrome Frame,想做到很安全,难。还是regsvr32 /u npchrome_tab.dll,早点卸了吧。

导出长虹V338手机的联系人电话和短信到PC端

2009年09月12日,星期六

老手机,长虹V338,想导出备份。500+个联系人在手机和SIM卡上,还有那么多短信,加上数据线和光盘也丢失了,所以很郁闷。

找维修站,结果维修站直接说型号太老没有线了,PC端软件也没有,而且可能导出来是乱码。艹。。。太不负责任鸟~~~

又打电话到国虹通讯,客服找了半天工程师,最后说,你到下载页去试试 电话同步工具.rar,不保证V338能用。艹~~~~~~

所以在路边上找地摊上根据接口定制了一根USB数据线,20元。

我开始慢吞吞用迅雷拖他们这个 电话同步工具.rar,国虹服务器是FTP,限了连接数,迅雷排队拖了4个小时才把3MB的文件下载完毕。不过迅雷的防死链技术还是很赞的,根本没连上FTP的时候就从一个192.169.*.*的资源下了20.6%多

等了4个小时终于可以试这个JB软件鸟。

先安装驱动,貌似是USB转串口。然后连接手机和PC,手机上弹出的连接菜单选 串口模式。手机就不会被电脑识别成USB Mass Storage优盘了,而是COM4的串口。

然后打开PC端软件,就可以下载联系人和短信到PC了。现在问题很讨厌的是:没法导出。 @.@

所以只有最后自己摸索鸟。从网上一些软件截图来看,发现和步步高的手机PC端软件界面很类似,研究了一下两个PC端软件,发现一些蛛丝马迹:都叫Phone Suite,都有个本地保存数据库的叫 PhoneSuite.bin。一Google,发现是MT6227 MTK6225。。。MTK。。。orz。。。。囧。。。。

那么这下工具和选择就多了,例如MTK Phone Suite V2.4.13,还有一些第三方工具例如 PhoneSuite.bin 短信阅读器 等,都可以很方便的导出导入啦。

貌似好多其他手机也是用的MTK62xx这个系列,大家以后有什么国产手机或者山寨机的,想同步联系人和短信到PC的,试试MTK Phone Suite吧,估计都是通用的。。。。。。。哎。手机市场太山寨鸟。

几个来自微软的好工具推荐

2009年09月3日,星期四

Microsoft SketchFlow

Microsoft SketchFlow是Expression® Studio 3里的,画草图,和那种铅笔风格的图特别有意思!

试用版直接下载地址

Microsoft SharedView

SharedView是个在网络分享程序窗口的工具。不得不承认,微软的这个idea非常好。传统远控木马(例如灰鸽子),Net Meeting,Live Conference和VNC之类的都是复制屏幕DC,而微软的这个可以只分享一个窗口的DC。这个程序响应速度特别快,可以直接看到输入法界面,不过依赖互联网连接,需要Live ID登录。局域网估计不行了。还有双鼠标技术也比较有意思。不知道可否基于这个做一个多触app,哈哈。。。通过网络多触拖放。

要是我来做这个东西的话我一定会基于rdp来做,直接复制绘制DC以前的指令,和DX、OpenGL指令。这样效率绝对最高。而且绝对要支持局域网甚至域。这里能创新的地方太多了。

具体介绍可以参考Technet文章:实用工具特别推荐 Microsoft SharedView

其余推荐

挖掘exe里字符的,strings,来自sysinternals

抓包的Microsoft Network Monitor 3.3

来自 Scott Hanselman via HN & reddit。原文有很多其他有用的工具推荐大家不妨去看看。

谷歌浏览器快捷键通用补丁发布 Chrome Hotkey Patch

2009年08月19日,星期三

谷歌浏览器快捷键通用补丁 Chrome Hotkey Patch

适用于任意版本的Chrome、Chromium,不出意外也应该直接兼容将来版本的Chrome、Chromium

补丁功能:

增加以下快捷键:

F1 撤销关闭标签
F2 上一个标签
F3 下一个标签
F4 关闭当前标签

Chrome帮助请按Ctrl+F1,页面文字查找请按Ctrl+F

补丁使用方法:

对 chrome.dll 打补丁即可。

点击 Browse 浏览 chrome.dll 所在位置,点击 Patch 打补丁。

会在 chrome.dll 同一目录生成一个备份 chrome.dll.bak

补丁下载

exe单文件直接下载:(731 KB)
http://zxn0.googlecode.com/svn/chrome_hotkey_patch/chrome_hotkey_patch.exe

  File: chrome_hotkey_patch.exe
  Size: 748750
CRC-32: d2ce16ce
   MD4: 8574d4f38e0ada2716bb9db6ed556f12
   MD5: 82f251535f1b0bb2b3c9821a743ac493
 SHA-1: 4a5bf2d7289520d386933fd5a00d5701d7ecf958

同时提供RAR打包源码(AutoIt3)下载

chm帮助文件中点击按钮打开外部文件

2009年08月19日,星期三

<OBJECT id=hhctrl type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=58 height=57>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Text:Open test.bat">
<PARAM name="Item1" value=",test.bat,">
</OBJECT>

微软Office Web也不支持IE6了

2009年08月13日,星期四

上次SharePoint Server 2010将不支持IE6之后,这次微软的Office Web也将不支持IE6。当然也没有在欧盟起诉微软的Opera和微软的竞争对手Chrome。让微软自己尝尝为IE6开发的痛苦吧!

via reddit

Chromium 3.0.197.0 (22359) 快捷键定制版下载

2009年08月4日,星期二

所谓Chromium 3.0.197.0 (22359) 快捷键定制版:

F1撤销关闭标签
F2上一个标签
F3下一个标签
F4关闭当前标签

以前发过的。现在更新下载:

http://zxn0.googlecode.com/svn/winutil/chrome.dll

File: chrome.dll
CRC-32: 9b3cd31f
MD4: 02867823f79018fd48e6fe900fa0b1aa
MD5: 08f5adeb9742f584dcd9081a56a55dcd
SHA-1: 52e7c617d0829e686ef7deb0b6fa1a956ade7e68

注意这个版本 --enable-udd-profiles 没有子菜单弹出,需要自己按Ctrl+M呼叫账户切换。等下一个版本修复bug吧。

几个微软自家的HTTP/SSL抓包工具

2009年08月4日,星期二

HN上看到工具贴了。没想到老外抓ssl的包也是这么土鳖和繁琐。

第一个是HTTPREPLAY/SOCKTRC,用于重放http,

HTTPREPLAY is a SOCKTRC plugin allowing to analyze and replay HTTP traffic from STRACE or WININET log. You can use this tool to "replay a web server" without needing to setup IIS. The main goal of this tool is to help building a repro scenario when customer can't provide one.

基于WININETLOG的。比较麻烦。而且log我的Firefox 3.5失败了。囧。。。

下载HTTPREPLAY.MSI

第二个是STRACE

STRACE is a socket/SSL tracer that is based on the "detours" utility. The tool has been specificaly designed to generate LOG for Internet Explorer but it can be used with many other applications.

这个玩意儿还是比较强大的,连LSASS都敢hook。基于detours的。下载strace.msi

第三个推荐的就是detours了。hook任意系统函数调试用的。下载DetoursExpress.msi

第四个是EasyHook,hook了任意系统API之后,可以用C/C++,Managed Code甚至IPC来进行控制。下载EasyHook 2.6 Binaries.zip

看来嗅SSL也无非那么几个方法了,一个是hook系统的WinSock SSL函数或者WinINET的,或者做LSP,另一个是截获/提取系统私钥解密。我觉得Wireshark基于IP那些过滤是很麻烦的。

不过从平时使用来看,这些工具都不是很好使,因为嗅http最需要的功能还是gzip流解压,和基于MIME把gif,jpg,css等无关过滤掉。目前看来还是HTTPAnalyzer和HTTPDebugger王道。