hopy | 侯佩

大熊猫侯佩 ! 不要和偶比懒,偶懒得和你比 -_-b

hope yangID:mydo
39151次访问,排名2704(-1)好友55人,关注者100
asm & C
mydo的文章
原创 34 篇
翻译 0 篇
转载 19 篇
评论 90 篇
hopy|侯佩的公告

intel 还是 at&t ?这是个问题!

贪吃贪睡的大熊猫侯佩!


最近评论
chtitaxie:不错,相当好.
goho100:特别想学黑客技术,但是却什么都不懂,有劳费心了!
mldstk:wow power leveling
huyongzs:哇,厉害。
chenjava:高手,,可以把完整代码放出来吗?FarAddr是指向哪个地址的啊?
文章分类
收藏
    相册
    程人画册
    生随画册
    常逛网站
    aogo汇编站
    sourceforge
    Windows Sysinternals
    www.0ginr.com
    www.reactos.org
    www.rootkit.com
    个人电脑
    中国IT实验室
    中国电子顶级开发网
    安全焦点
    安全矩阵
    安徽机票网
    看雪论坛
    第8个男人
    邪恶八进制论坛
    驱动开发网
    高端调试
    朋友的blog(排名不分先后)
    Chen 的 blog
    信仰 的 blog
    兔子 的 blog
    十月印象 的 blog
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 [原创]Unlocker加强版技术特征收藏

    新一篇: 由ANSI C标准咬文嚼字发现滴东东 | 旧一篇: [原创]温习一个 C# Project : KsPlanMon

                                                                     Unlocker加强版技术特征
     
    Unlocker是一个偶闲时写的小工具,主要功能有:

     1. 解锁已打开文件;
     2.建立以特定用户身份的shell。

    上一个版本的概述在:原创]C# 与 汇编 的一次亲密接触。

    加强版本新增的特征有:

     1.采取了和 regmon & filemon 类似的方法,将 dll 等模块嵌入到主PE中,
     使之成为真正的 "绿色" 工具。

     2.因为gcc没有naked函数的功能(虽然有naked选项,但是生成不了naked函数
     如果哪位知道是什么问题,请不吝指出,多谢。),所以用汇编写了一个
     静态库进行连接。之所以要采用naked函数是想实现不定参数的跨函数传递,
     比如:

            void myprintf(const char *ft,...)
            {
          printf(ft,?????);//wrong!
            }


     而在汇编或vc中这个比较好办,我们设计一个"透明"的跳板,好像从myprintf
     直接跳转到printf一样:

      _MsgShow_Console proc
       jmp printf
      _MsgShow_Console endp

     但在要做中间处理的情况下,就更复杂一些,比如:

    void myprintf_msgbox(const char *ft,...)
            {
         char buf[BUFSIZ]={0};
         sprintf(buf,ft,?????);//wrong!
         MessageBox(NULL,buf,"message",MB_OK);
            }


     这时不能直接做跳转,必须手动写参数处理,就像偶以前在汇编区回答过一位
     VC仁兄的问题 <如何处理函数的不定参数> 一样:

     _MsgShow_Win32  proc
       push ebp  ;save ebp is very important
       mov eax,[esp+4] ;temp return address
       lea ebp,[esp+4]
       sub esp,0100h ;create tmp buf (0x100 bytes)
       mov esi,esp  ;save tmp buf address
       add eax,2
       movzx ecx,byte ptr [eax]
       shr ecx,2  ;get parms number total size / size(dword)
       mov ebx,esp  ;save esp
       .while ecx > 0h
        mov eax,[ebp + ecx*4]
        push eax
        dec ecx
       .endw
       push esi
       call sprintf
       invoke MessageBoxA,0,ebx,addr cp,0
       lea esp,[ebp-4]
       pop ebp  ;restore ebp
       ret
      _MsgShow_Win32  endp


     然后在gcc中只要按需求定义宏,就可以实现完全自动的DEBUG输出了:

    #ifdef _DRV_DEBUG_
      
       #if defined(_DRV_CONSOLE_)
        #define MsgShow(...) _MsgShow_Console(__VA_ARGS__)
       #elif defined(_DRV_WIN32_)
        #define MsgShow(...) _MsgShow_Win32(__VA_ARGS__)
       #elif defined(_DRV_CORE_)
        #define MsgShow(...) _MsgShow_Core(__VA_ARGS__)
       #else
        #error : Must Choose One From 3 Show Model.
       #endif
     
      #else
       #define MsgShow(...) ((void)0)
      #endif

    对于内核中的 "printf" 函数我们同样有: 

      _MsgShow_Core  proc 
       jmp DbgPrint
      _MsgShow_Core  endp
     

    3.在unlocker中加入了建立用户shell的功能,方便测试。比如可以方便的生成本地最高
     权限SYSTEM用户的shell,以及其他任何管理员和用户的shell;可以在当前是user级别
     用户的环境下直接产生Administrator级别用户的shell。

     

    4.增加了 关闭核心句柄 的功能。使之在NT下可以关闭像 PageFile.sys 这样核心文件对
     象的句柄。但对一些关键核心文件对象,比如 SAM 文件来说,如果将其关闭马上会造成
     系统蓝屏。所以请在虚拟机下尝试,否则后果自负哦。

     

     

    5.分别在 Windows 2000 sp4、Windows XP sp2、Windows 2003 sp1 下做了兼容性测试,发
     现几处需要调整的地方:

      a.windows 2000 中没有 GetProcessImageFileName 函数,所以将原来的 API
      换成 GetModuleFileNameEx;

      b.windows 2000 中没有 NtCreateProcessEx 这个 API ,所以将原来的
      _CreateSystemShell分为2个版本;

      c.windows 2003 对内存属性的检查更加严格,故而从原来的
      PAGE_READWRITE 变成 PAGE_EXECUTE_READWRITE,否则在2003下程序崩溃。
     
     因为条件有限,没有在 windows NT 4.0 上做测试,如果哪位可以帮忙测试一下,就十分
     感谢啦. :)

     6.增加了 强力查找 功能,可以模糊匹配更多关键字;

     7.加强了对 是否真正关闭 的检查功能,不像以前只是给出一个"模糊"的结果。并且更具
     不同的结果以不同的颜色更加显目的呈现给用户。

     

    8.修正了一个有符号数的关系 BUG 。

     (未完待续)

    unlocker EX 下载连接: http://download.csdn.net/source/433389 欢迎测试,请多多指出bug 。

    发表于 @ 2008年04月27日 22:17:00|评论(loading...)|

    新一篇: 由ANSI C标准咬文嚼字发现滴东东 | 旧一篇: [原创]温习一个 C# Project : KsPlanMon

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © hopy|侯佩