swigger’s BLOG

醉卧沙场君莫笑 古来征战几人回
RSS icon Email icon Home icon
  • Internet连接共享(ICS)命令行设置

    Posted on 二月 23rd, 2010 admin 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

    经验教训:

    1. 搜命令行或Command line 之类的关键词找不到结果时,要试一下script, vbs之类的关键字。
    2. 搜这种词的时候,google还是挺垃圾的,我是用google.com/ncr搜的,还是难以找到。
    3. 互联网上的垃圾信息越来越多了,想要的有深度的内容会越来越不好找。
    4. 一边研究一边google的做法,目前还是比较好用的。想当年为了把windows(不是WINPE)装到移动硬盘上,并且可以在任意一台电脑上启动系统并使用系统,就是用研究再加搜索的方法,研究到80%,知道了一堆的keyword,也就容易找到相同的问题和解决方案了,否则找到的都是垃圾。

    ics.vbs 下载

  • 测试上传图片

    Posted on 二月 21st, 2010 admin No comments

    test

    just test.

  • 升级wordpress到2.9.1

    Posted on 二月 15th, 2010 admin 2 comments

    跟上次不一样,这一次用了自己做的merge工具,有了merge工具,升级不愁了。。。

    再也不怕丢失自己的修改了。

  • 刷了android的ROOT

    Posted on 二月 15th, 2010 admin 3 comments

    主要就是参考:
    http://www.androidin.net/bbs/thread-48066-1-1.html
    title: 图文教程给新手一步一步unlock, root, 和刷机 并添加multitouch

    不过软件不是从那里下的,除了recovery image镜像。

    我是从这里下的,好像新一点:

     http://android.modaco.com/content/google-nexus-one-nexusone-modaco-com/298782/12-feb-erd79-ere27-ere36b-superboot-rooting-the-nexus-one/

    android.modaco.com这地方不错,以后多关注。

    联系人中文排序也搞定了,参照androidin.net的,替换了两个文件。不过与说明有所不同的是,这个2.1update1系统居然没有cp命令,晕。看来等到我会写的时候,找时间自己编一个传上去?

  • 下载android电子市场的程序到电脑上

    Posted on 二月 15th, 2010 admin 6 comments

    android电子市场还是很不错的,能方便的下载并安装软件。

    不过,它下完就帮你安装了,不管是成功还是失败,安装文件都不能被找到。

    暂时对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 admin No comments

    1. 在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 admin 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 admin No comments

    偶尔打开冰刃就发现了,其原理好简单,用了wpsdrvnt.sys修改了ssdt中的几个函数,主要是关进程和内存修改的相关函数,用来保护smc.exe。所以要想自由的开关smc,只需要禁用wpsdrvnt就行了:

    sc config wpsdrvnt start= disabled

    重启即可。

    这样不会影响他的产品的其它功能。

  • 宽带连接不见了

    Posted on 九月 3rd, 2009 admin 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 admin No comments

    windows的透明窗口,如果设置了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; }