我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

« 1 2» Pages: ( 1/2 total )
本页主题: 刚刚找了个用户态执行内核态程序的源码 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

依然随意



性别: 帅哥 状态: 该用户目前不在线
等级: 前途无量
家族: ⊙JAY菊爱园⊙
发贴: 5922
威望: 0
浮云: 760
在线等级:
注册时间: 2006-09-25
最后登陆: 2022-10-30

5come5帮你背单词 [ civilian /si'viljən/ a. 平民的,民用的,民众的 ]


刚刚找了个用户态执行内核态程序的源码

找了一个在用户态锁定键盘的程序(不是使用钩子hook实现的),碍于源码稍大,一个人分析不知道要到什么时候去了,拿出来有兴趣的都来看一下,然后大家分享一下心得。(补充一下,代码编译的时候要装sdk,如果编译器是vc6,要装platform sdk,代码里嵌的有汇编,感觉自己主要是保护模式下线性地址空间,分页调度,中断机制不懂,懂的蝈蝈分享一下哈)


[ 此帖被依然随意在2007-12-21 23:12重新编辑 ]
附件: 锁定键盘.rar (85 K) 下载次数:35

本帖最近评分记录:
  • 浮云:5(est) 引发讨论
  • 顶端 Posted: 2007-12-21 22:39 | [楼 主]
    依然随意



    性别: 帅哥 状态: 该用户目前不在线
    等级: 前途无量
    家族: ⊙JAY菊爱园⊙
    发贴: 5922
    威望: 0
    浮云: 760
    在线等级:
    注册时间: 2006-09-25
    最后登陆: 2022-10-30

    5come5帮你背单词 [ husband /'hΛzbənd/ n. 丈夫 ]


    自己板凳
    顶端 Posted: 2007-12-21 22:40 | [1 楼]
    水哥



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 无知和妄为!!!
    等级: 人见人爱
    家族: KOP★红军魂
    发贴: 4999
    威望: 1
    浮云: 1152
    在线等级:
    注册时间: 2007-07-05
    最后登陆: 2008-06-26

    5come5帮你背单词 [ right /rait/ a. 右边的,正确的,健全的;n. 右,右边,权利,正确;ad. 对,正好,恰恰;vt. 改正 ]


    下来看看
    顶端 Posted: 2007-12-21 22:45 | [2 楼]
    依然随意



    性别: 帅哥 状态: 该用户目前不在线
    等级: 前途无量
    家族: ⊙JAY菊爱园⊙
    发贴: 5922
    威望: 0
    浮云: 760
    在线等级:
    注册时间: 2006-09-25
    最后登陆: 2022-10-30

    5come5帮你背单词 [ gallon /'gælən/ n. 加仑(液量单位) ]


    Quote:
    引用第2楼水哥于2007-12-21 22:45发表的  :
    下来看看
    看了后,有心得的话一定要分享哈。
    顶端 Posted: 2007-12-21 22:46 | [3 楼]
    水哥



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 无知和妄为!!!
    等级: 人见人爱
    家族: KOP★红军魂
    发贴: 4999
    威望: 1
    浮云: 1152
    在线等级:
    注册时间: 2007-07-05
    最后登陆: 2008-06-26

    5come5帮你背单词 [ weak /wi:k/ a. 虚弱的,无力的,(能力等)差的,弱的,微弱的,淡薄的 ]


    Quote:
    引用第3楼依然随意于2007-12-21 22:46发表的 :
    看了后,有心得的话一定要分享哈。

    没有啊
    顶端 Posted: 2007-12-21 22:48 | [4 楼]
    依然随意



    性别: 帅哥 状态: 该用户目前不在线
    等级: 前途无量
    家族: ⊙JAY菊爱园⊙
    发贴: 5922
    威望: 0
    浮云: 760
    在线等级:
    注册时间: 2006-09-25
    最后登陆: 2022-10-30

    5come5帮你背单词 [ taut /to:t/ a. 拉紧的,绷紧的,紧张的 ]


    补充一下,编译这个文件的时候要装一个sdk。
    顶端 Posted: 2007-12-21 22:49 | [5 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ vegetarian /ved3ə't/əriən/ n. 素食者;a. 吃素的 ]


    这个程序太牛B了
    等明天好好看~
    顶端 Posted: 2007-12-21 23:46 | [6 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ priority /prai'oriti/ n. 先,前,优先,优先考虑的事物,优先(权) ]


    真的好牛
    我第一次真正见识了程序自己构造调用gate

    我觉得它牛B的地方:
    未公开API的调用,那么随意,飘逸!
    对物理内在的操作,那么简洁,
    自己修改GDT,对保护模式好熟识!


    不过这个程序并没有真正地修改IDT,他只是在GDT里加了一个描述符。

    真正修改IDT的代码在lkbr0.cpp里,不过不知道为什么他并没有使用这份代码(把lkbr0.cpp删了程序也能正常编译和运行)。

    而且它没有真正的查询页表的操作,转物理内在的操作是靠VirtualToPhysicalAddress这个函数完成的(神奇的函数

    我印象中,好像看过有资料说GDT、IDT、页目录表等等重要的表都是不会被切换出物理内存的(即不会被切换到硬盘上去),但不知为什么
    Copy code
    DWORD VirtualToPhysicalAddress( DWORD dw_virtual_address )
    {
        if( dw_virtual_address<0x80000000 || dw_virtual_address >= 0xA0000000 )
        {
            return 0;
        }
        else
        {
            return dw_virtual_address&0x1FFFF000;
        }
    }

    这么简单的转换居然可以正常工作。


    跟这个程序没必要使用WinDbg,我用VC跟了一遍,gdt等内核东东的地址都是可以看到的。
    顶端 Posted: 2007-12-22 10:58 | [7 楼]
    依然随意



    性别: 帅哥 状态: 该用户目前不在线
    等级: 前途无量
    家族: ⊙JAY菊爱园⊙
    发贴: 5922
    威望: 0
    浮云: 760
    在线等级:
    注册时间: 2006-09-25
    最后登陆: 2022-10-30

    5come5帮你背单词 [ tractor /'træktə/ n. 拖拉机,牵引车 ]


    Quote:
    引用第7楼yinx于2007-12-22 10:58发表的  :
    真的好牛
    我第一次真正见识了程序自己构造调用gate

    我觉得它牛B的地方:
    未公开API的调用,那么随意,飘逸!
    .......
    GDT表可以在用户态改吗?
    顶端 Posted: 2007-12-22 11:39 | [8 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ convey /kən'vei/ vt. 传达,表达,传送,运输 ]


    Quote:
    引用第8楼依然随意于2007-12-22 11:39发表的  :
    GDT表可以在用户态改吗?


    本来是不可以的,
    但它调用了SetPhyscialMemorySectionCanBeWrited这个函数之后就可以了
    顶端 Posted: 2007-12-22 12:04 | [9 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ horsepower /'ho:spauə/ n. 马力 ]


    不过SetPhyscialMemorySectionCanBeWrited里用到的API貌似都是公开的,我不知道它为啥要用自己的CallFunc而不直接调用那些API
    顶端 Posted: 2007-12-22 12:20 | [10 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ pad /pæd/ n. 垫子,便笺簿,缓冲器;vt. 填塞 ]


    Quote:

    段间呼叫gdt,为什么要call  fword  ptr  [MyGateSelector]这样用


    Quote:

    一个基本的调用不适用与这种定位于ring0而实际在ring3的callgate程序。我们需要进行"far  call"   
      (inter-privilege  level  call),  因此为了调用callgate,必须这样做:   
       
      short  farcall[3];   
      farcall[0  -->  1]  =  offset  from  the  target  operand.  This  is  ignored  when  a   
      callgate  is  used   
       
      farcall[2]  =  callgate  selector   
       
        ----"IA-32  Intel  Architecture  Software  Developer's  Manual  (Volume  2)"  (see  [5]).   


    Quote:

    FWORD=6  BYTE 
      QWORD=8  BYTE


    Quote:

    补充Areslee(易水)   
      fword  =  6  byte 
      但是以8字节对齐


    引自CSDN---http://topic.csdn.net/t/20031227/13/2608876.html
    顶端 Posted: 2007-12-22 12:26 | [11 楼]
    依然随意



    性别: 帅哥 状态: 该用户目前不在线
    等级: 前途无量
    家族: ⊙JAY菊爱园⊙
    发贴: 5922
    威望: 0
    浮云: 760
    在线等级:
    注册时间: 2006-09-25
    最后登陆: 2022-10-30

    5come5帮你背单词 [ attorney /ə'tə:ni/ n. 律师 ]


    Quote:
    引用第10楼yinx于2007-12-22 12:20发表的  :
    不过SetPhyscialMemorySectionCanBeWrited里用到的API貌似都是公开的,我不知道它为啥要用自己的CallFunc而不直接调用那些API
    果果真是强人,赞一个,以后有问题就问你了
    顶端 Posted: 2007-12-22 12:29 | [12 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ confer /kən'fə:/ vi. 商谈,商议;vt. 授予,赋予 ]


    Quote:
    引用第12楼依然随意于2007-12-22 12:29发表的  :
    果果真是强人,赞一个,以后有问题就问你了


    这个程序我还有很多不懂的地方
    可能写这个程序的人都不敢自称强
    我就更加是小菜了
    顶端 Posted: 2007-12-22 12:31 | [13 楼]
    blulove



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 712
    威望: 0
    浮云: 1117
    在线等级:
    注册时间: 2006-02-27
    最后登陆: 2008-06-30

    5come5帮你背单词 [ peak /pi:k/ n. 山顶,最高点,顶点;a. 最高的,高峰的 ]


    又是用该死的MFC写的,有没有蝈蝈能把它转成下C代码啊,看到MFC就头晕
    顶端 Posted: 2007-12-22 12:43 | [14 楼]
    « 1 2» Pages: ( 1/2 total )
    我来我网·5come5 Forum » 程序员之家

    Total 0.015470(s) query 5, Time now is:11-22 04:54, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号