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

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

yinx



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

5come5帮你背单词 [ advise /əd'vaiz/ vt. 劝告,建议,通告,通知 ]


Quote:
引用第9楼yinx于2007-12-22 12:04发表的  :


本来是不可以的,
但它调用了SetPhyscialMemorySectionCanBeWrited这个函数之后就可以了


我错了~~

Copy code
        status = ntdll.CallFunc( "ZwOpenSection",
            &m_hSection,
            SECTION_MAP_READ|SECTION_MAP_WRITE,
            &objectAttributes );

        if(status == STATUS_ACCESS_DENIED)
        {
            status = ntdll.CallFunc( "ZwOpenSection",
                &m_hSection,
                READ_CONTROL|WRITE_DAC,
                &objectAttributes );

            if( status == STATUS_SUCCESS )
            {
                SetPhyscialMemorySectionCanBeWrited(m_hSection);
                ntdll.CallFunc( "ZwClose", m_hSection );
                status = ntdll.CallFunc( "ZwOpenSection",
                    &m_hSection,
                    SECTION_MAP_WRITE|SECTION_MAP_WRITE,
                    &objectAttributes );
            }
        }


他是先调用ZwOpenSection,如果返回STATUS_ACCESS_DENIED再调用SetPhyscialMemorySectionCanBeWrited的。

我调试的时候调用ZwOpenSection就已经成功的了,程序没有再去调用SetPhyscialMemorySectionCanBeWrited

自强不息!
顶端 Posted: 2007-12-22 12:49 | [15 楼]
blulove



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

5come5帮你背单词 [ stray /strei/ vi. 迷路,走失,脱离正道,走入歧途;迷路者,流浪者;n. 迷路的,漂泊的 ]


主要的流程大概是这样: 
  1:高地址虚拟空间转换为物理空间,RING3不可见
2:重新映射获得的物理空间到低地址虚拟空间,这下RING3可见了赛
3:添加GDT描述符,完事
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 12:50 | [16 楼]
blulove



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

5come5帮你背单词 [ appoint /ə'point/ vt. 任命,委派,指定,约定(时间、地点等) ]


GDT,IDT这些当然不能被换出,不然那还不蓝屏蓝爽
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 12:52 | [17 楼]
blulove



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

5come5帮你背单词 [ majesty /'mæd3əisti/ n. 宏伟,庄严,威严,尊严,陛下 ]


这个似乎通过打开物理内存对象来操作的吧
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 12:53 | [18 楼]
yinx



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

5come5帮你背单词 [ depart /di'pa:t/ v. 离开,出发,(火车等)开行 ]


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


第2项不懂,蝈蝈教我一下~
它是用哪些语句完成第2项的?

自强不息!
顶端 Posted: 2007-12-22 12:54 | [19 楼]
blulove



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

5come5帮你背单词 [ expel /iks'pel/ vt. 赶出,驱逐,开除,射出(子弹等),排出(气体等) ]


里面应该有VirtualAddrToPhysicAddr这样的函数的,不然没有办法操作嘛
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 13:03 | [20 楼]
blulove



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

5come5帮你背单词 [ prepare /pri'p/ə/ n. 准备,预备 ]


求强人转下C代码  
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 13:04 | [21 楼]
yinx



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

5come5帮你背单词 [ bow /bau/ vi. 鞠躬,点关(以示招呼、同意等);n. 点头,鞠躬,弓,弓形物 ]


Quote:
引用第20楼blulove于2007-12-22 13:03发表的  :
里面应该有VirtualAddrToPhysicAddr这样的函数的,不然没有办法操作嘛


确实是有这样的函数,
不过你说的第二步是把物理空间映射到低虚拟空间,
我不知道要用什么语句完成映射这个操作

自强不息!
顶端 Posted: 2007-12-22 13:07 | [22 楼]
blulove



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

5come5帮你背单词 [ hunter /'hΛntə/ n. 猎人 ]


原来API帮我们完成了,MapViewOfFile
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 13:34 | [23 楼]
blulove



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

5come5帮你背单词 [ crate /kreit/ n. 轰响,坠毁,碰撞;v. 碰撞,粉碎 ]


貌似想复杂了,有物理内存对象这个接口,不需要这么复杂
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 14:03 | [24 楼]
blulove



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

5come5帮你背单词 [ immense /i'mens/ a. 巨大的,广大的 ]


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 | [25 楼]
blulove



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

5come5帮你背单词 [ farewell /'f/ə'wel/ int. 再会;n. 告别,欢送会 ]


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


至于这个嘛,可以做个不利用物理内存对象操作任意进程任意空间的东东出来耍,不过似乎要对OS分页分段很熟悉才行
『很久很久以前,谎言和真实在河边洗澡, 
 谎言先洗好,穿了真实的衣服离开,  
 真实却不肯穿谎言的衣服。 
 后来,在人们的眼里, 
 只有穿着真实衣服的谎言, 
 却很难接受赤裸裸的真实』
顶端 Posted: 2007-12-22 14:15 | [26 楼]
«1 2 » Pages: ( 2/2 total )
我来我网·5come5 Forum » 程序员之家

Total 0.013591(s) query 5, Time now is:02-22 12:16, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号