swigger’s BLOG
醉卧沙场君莫笑 古来征战几人回-
Internet连接共享(ICS)命令行设置
Posted on 二月 23rd, 2010 No comments因为有些原因要用到ICS。想用命令行启用ICS,GOOGLE了一番,没有结果,有的人信势旦旦的说用netsh可以做到,通过对比开启ICS前和ICS后的netsh dump文件发现,这两个根本就没有本质区别,换句话说,netsh不可能开启ICS。
于是对比注册表,注册表太大,只对比了开启ICS前后的Current Control Set,也没有发现本质区别,换句话说,改注册表可能不能启用ICS,或者很难,不知道信息存在哪里。(我猜是不在注册表里的)
没办法了,使出万能法宝,一定可以成功的调试器。ollydbg威武出场,调试了一下,通过网卡属性设置ICS时,调用了hnetcfg里的COM接口。用oleview一看,嘿,这dll还提供了比较不错的idl信息,还是基于IDispatch接口的,也就是说,可以用脚本调用。于是改换方向,用这个IDL里面的关键字,继续google。这下就找到了。
用起来还挺简单: cscript /nologo ics.vbs “private interface name” “public interface name”
key word: CONNECTION_PUBLIC CONNECTION_PRIVATE EnableSharing
经验教训:
- 搜命令行或Command line 之类的关键词找不到结果时,要试一下script, vbs之类的关键字。
- 搜这种词的时候,google还是挺垃圾的,我是用google.com/ncr搜的,还是难以找到。
- 互联网上的垃圾信息越来越多了,想要的有深度的内容会越来越不好找。
- 一边研究一边google的做法,目前还是比较好用的。想当年为了把windows(不是WINPE)装到移动硬盘上,并且可以在任意一台电脑上启动系统并使用系统,就是用研究再加搜索的方法,研究到80%,知道了一堆的keyword,也就容易找到相同的问题和解决方案了,否则找到的都是垃圾。
-
测试上传图片
Posted on 二月 21st, 2010 No commentsjust test.
-
升级wordpress到2.9.1
Posted on 二月 15th, 2010 2 comments跟上次不一样,这一次用了自己做的merge工具,有了merge工具,升级不愁了。。。
再也不怕丢失自己的修改了。
-
刷了android的ROOT
Posted on 二月 15th, 2010 3 comments主要就是参考:
http://www.androidin.net/bbs/thread-48066-1-1.html
title: 图文教程给新手一步一步unlock, root, 和刷机 并添加multitouch不过软件不是从那里下的,除了recovery image镜像。
我是从这里下的,好像新一点:
android.modaco.com这地方不错,以后多关注。
联系人中文排序也搞定了,参照androidin.net的,替换了两个文件。不过与说明有所不同的是,这个2.1update1系统居然没有cp命令,晕。看来等到我会写的时候,找时间自己编一个传上去?
-
下载android电子市场的程序到电脑上
Posted on 二月 15th, 2010 6 commentsandroid电子市场还是很不错的,能方便的下载并安装软件。
不过,它下完就帮你安装了,不管是成功还是失败,安装文件都不能被找到。
暂时对ANDROID还很不熟,不清楚有没有简单的办法下载但不安装。然后把文件传回PC。
不过,至少存在这样的一种办法来达到把程序下载到电脑上的效果:
1. 开启支持电子市场的android模拟器。参考 http://tech-droid.blogspot.com/2009/11/android-market-on-emulator.html (好像是要翻墙的)。必须下载作者提供的镜象,否则,模拟器不能访问网络。
2. 启动sniffer软件(如wireshark)。用模拟器下载安装APP。因为是模拟器,随便安装也不怕。此时会监听到一个HTTP下载的请求,形如:
GET /market/download/Download?assetId=-3783207302739264490&userId=573662974701&deviceId=96777546538815391 HTTP/1.1
Cookie: ANDROID=xxxxxxxx
Host: android.clients.google.com
Connection: Keep-Alive
User-Agent: AndroidDownloadManager用curl 即可下载:
curl -o app.apk -v -A “AndroidDownloadManager” http://android.clients.google.com/market/download/Download?assetId=-3783207302739264490&userId=573662974701&deviceId=96777546538815391 -b “ANDROID=xxxxxxxx”
当然,这个方法还是复杂了点,有没有简单的办法,还需以后了解了再说。
-
关于时间转换
Posted on 十二月 14th, 2009 No comments1. 在excel里显示time_t类型的时间(1970-1-1到现在的秒数): 设数字在B1格中,先输入工式: =(E1+8*3600)/(24*3600)+25569,然后设置单元格选项为日期类型即可。
2. 得到当前的time_t秒数,这在程序中很容易,在linux命令下,可以用 data +%s 命令得到。
3. 在linux命令行下把数值转化为时间: 设目前秒数是1260796354,则命令为:
data -d @1260796354当然,这些都是命令行或软件使用中的。在程序中,那是非常方便的转换。
-
variant 变量表
Posted on 十月 24th, 2009 No comments老是要查头文件,又排得不整齐,排一份如下:
LONGLONG llVal; /* VT_I8 */ LONG lVal; /* VT_I4 */ BYTE bVal; /* VT_UI1 */ SHORT iVal; /* VT_I2 */ FLOAT fltVal; /* VT_R4 */ DOUBLE dblVal; /* VT_R8 */ VARIANT_BOOL boolVal; /* VT_BOOL */ SCODE scode; /* VT_ERROR */ CY cyVal; /* VT_CY */ DATE date; /* VT_DATE */ wireBSTR bstrVal; /* VT_BSTR */ IUnknown * punkVal; /* VT_UNKNOWN */ IDispatch * pdispVal; /* VT_DISPATCH */ wirePSAFEARRAY parray; /* VT_ARRAY */ BYTE * pbVal; /* VT_BYREF|VT_UI1 */ SHORT * piVal; /* VT_BYREF|VT_I2 */ LONG * plVal; /* VT_BYREF|VT_I4 */ LONGLONG * pllVal; /* VT_BYREF|VT_I8 */ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */ SCODE * pscode; /* VT_BYREF|VT_ERROR */ CY * pcyVal; /* VT_BYREF|VT_CY */ DATE * pdate; /* VT_BYREF|VT_DATE */ wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */ wirePSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */ wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */ CHAR cVal; /* VT_I1 */ USHORT uiVal; /* VT_UI2 */ ULONG ulVal; /* VT_UI4 */ ULONGLONG ullVal; /* VT_UI8 */ INT intVal; /* VT_INT */ UINT uintVal; /* VT_UINT */ DECIMAL decVal; /* VT_DECIMAL */ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */ CHAR * pcVal; /* VT_BYREF|VT_I1 */ USHORT * puiVal; /* VT_BYREF|VT_UI2 */ ULONG * pulVal; /* VT_BYREF|VT_UI4 */ ULONGLONG * pullVal; /* VT_BYREF|VT_UI8 */ INT * pintVal; /* VT_BYREF|VT_INT */ UINT * puintVal; /* VT_BYREF|VT_UINT */ -
symantec的smc.exe防杀原理
Posted on 九月 6th, 2009 No comments偶尔打开冰刃就发现了,其原理好简单,用了wpsdrvnt.sys修改了ssdt中的几个函数,主要是关进程和内存修改的相关函数,用来保护smc.exe。所以要想自由的开关smc,只需要禁用wpsdrvnt就行了:
sc config wpsdrvnt start= disabled
重启即可。
这样不会影响他的产品的其它功能。
-
宽带连接不见了
Posted on 九月 3rd, 2009 No comments囧,把Remote Access Connection Manager的image path从svchost.exe改成svchost1.exe后,(已经把svchost.exe copy一份到svchost1.exe) , 宽带连接就不见了。
还能创建宽带拨号连接,但不能和之前创建的重名,创建后也看不到。
查了不少时间,才想起做了这一改动,改回去重启,果然又出现了。
微软真搞笑,还有检查这一名字的。
同时发现,创建的这些宽带拨号连接,都保存在 C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk 下的 rasphone.pbk 里。而不是在注册表。
-
透明窗口,连鼠标键盘事件也不接受,全透明
Posted on 八月 1st, 2009 No commentswindows的透明窗口,如果设置了LWA_ALPHA和WS_EX_TRANSPARENT,就会连鼠标键盘事件也给透明过去,这个功能还不错。可以在屏上显示水印。
关键代码:
SetWindowLong(m_hWnd, GWL_EXSTYLE, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOPMOST);
SetLayeredWindowAttributes(m_hWnd, RGB(0,0,0), 120, LWA_ALPHA);
SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW);demo代码:
static LRESULT WINAPI UIWndProcBase(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == WM_PAINT) { PAINTSTRUCT ps; BeginPaint(hWnd, &ps); //OnPaint(ps.hdc); EndPaint(hWnd, &ps); } else if (msg == WM_DESTROY) { PostQuitMessage(0); } return DefWindowProc(hWnd, msg, wParam, lParam); } void UIRun() { WNDCLASSEX wc = {sizeof(wc)}; wc.hInstance = GetModuleHandle(0); wc.lpszClassName = _T("uiclassname"); wc.lpfnWndProc = &UIWndProcBase; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); RegisterClassEx(&wc); wstring ws = L"aaabbcd"; HWND hParent = CreateWindowExW(WS_EX_TRANSPARENT, _T("EDIT"), _T(""), WS_POPUP, 0, 0, 100, 100, 0, NULL, wc.hInstance, NULL); HWND m_hWnd = CreateWindowEx(0, wc.lpszClassName, ws.c_str(), WS_POPUP, 0, 0, 100, 100, hParent, NULL, wc.hInstance, NULL); SetWindowLong(m_hWnd, GWL_EXSTYLE, WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOPMOST); SetLayeredWindowAttributes(m_hWnd, RGB(0,0,0), 120, LWA_ALPHA); SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW); MSG msg; while (GetMessage(&msg, 0, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } int main() { UIRun(); return 0; }



