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

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

依然随意



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

5come5帮你背单词 [ improve /im'pru:v/ vt. 改进,改善;vi. 改善,变得更好 ]


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

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


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

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



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

    5come5帮你背单词 [ complicated /'komplikeitid/ a. 复杂的,难懂的 ]


    又是用该死的MFC写的,有没有蝈蝈能把它转成下C代码啊,看到MFC就头晕
    顶端 Posted: 2007-12-22 12:43 | [1 楼]
    blulove



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

    5come5帮你背单词 [ antique /æn'ti:k/ a. 古代的,古式的,旧式的;n. 古物,古董 ]


    主要的流程大概是这样: 
      1:高地址虚拟空间转换为物理空间,RING3不可见
    2:重新映射获得的物理空间到低地址虚拟空间,这下RING3可见了赛
    3:添加GDT描述符,完事
    顶端 Posted: 2007-12-22 12:50 | [2 楼]
    blulove



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

    5come5帮你背单词 [ select /si'lekt/ vt. 选择,挑选;a. 选择的,精选的 ]


    GDT,IDT这些当然不能被换出,不然那还不蓝屏蓝爽
    顶端 Posted: 2007-12-22 12:52 | [3 楼]
    blulove



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

    5come5帮你背单词 [ bonus /'bəunəs/ n. 奖金,补贴,额外津贴 ]


    这个似乎通过打开物理内存对象来操作的吧
    顶端 Posted: 2007-12-22 12:53 | [4 楼]
    blulove



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

    5come5帮你背单词 [ compact /'kompækt, kəm'pækt/ a. 紧密的,结实的,紧凑的,简洁的 ]


    里面应该有VirtualAddrToPhysicAddr这样的函数的,不然没有办法操作嘛
    顶端 Posted: 2007-12-22 13:03 | [5 楼]
    blulove



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

    5come5帮你背单词 [ protective /prə'tektiv/ a. 保护的,防卫的 ]


    求强人转下C代码  
    顶端 Posted: 2007-12-22 13:04 | [6 楼]
    blulove



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

    5come5帮你背单词 [ severe /si'viə/ a. 严重的,严厉的,激烈的,困难的 ]


    原来API帮我们完成了,MapViewOfFile
    顶端 Posted: 2007-12-22 13:34 | [7 楼]
    blulove



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

    5come5帮你背单词 [ subsequent /'sΛbsikwənt/ a. 继…之后的,后来的 ]


    貌似想复杂了,有物理内存对象这个接口,不需要这么复杂
    顶端 Posted: 2007-12-22 14:03 | [8 楼]
    blulove



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

    5come5帮你背单词 [ christ /kraist/ n. 合唱,齐声,异口同声的话 ]


    1:获取内存中GDT基地址VirGdtAddr(_asm sgdt fword ptr gdt;)
    2:调用VirtualToPhysicalAddress把VirGdtAddr转换成PhyGdtAddr
    3:打开物理内存对象,设置写权限
    4:映射物理内存对象
    5:定位到PhyGdtAddr,搜索GDT空项,填加gate


    [ 此帖被blulove在2007-12-22 17:59重新编辑 ]
    顶端 Posted: 2007-12-22 14:12 | [9 楼]
    blulove



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

    5come5帮你背单词 [ highland /'hailənd/ n. (pl.)高地,山地 ]


    Quote:
    引用第16楼blulove于2007-12-22 12:50发表的  :
    主要的流程大概是这样: 
      1:高地址虚拟空间转换为物理空间,RING3不可见
    2:重新映射获得的物理空间到低地址虚拟空间,这下RING3可见了赛
    3:添加GDT描述符,完事


    至于这个嘛,可以做个不利用物理内存对象操作任意进程任意空间的东东出来耍,不过似乎要对OS分页分段很熟悉才行
    顶端 Posted: 2007-12-22 14:15 | [10 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.021356(s) query 6, Time now is:07-09 03:13, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号