首页
社区
课程
招聘
[求助]请教关于对象的封装问题
发表于: 2009-2-19 22:31 3218

[求助]请教关于对象的封装问题

2009-2-19 22:31
3218
【求助】请教关于对象的封装问题

我想请教一下,用面向对象语言写的程序,其中某些类对象的私有属性或方法,是可以防止其它类对象修改或调用的。

那防止其它类调用是在程序的哪个时候完成的,是编译的时候吗?

程序运行之后,如WINDOWS的组件的调用,那是编译好的组件,那还是可以防止新类去调用组件创建对象的私有属性或者方法吗?

另,对于windows的COM组件,它们平时是存放在内存何处?组件是一个建好的对象,还是一个对象(类?)描述

调用时由组件创建的对象,他的权限是跟谁。是组件本身,还是创建组件者?

比如常听说的提升ASP.DLL权限,他提升的是ASP.DLL的运行权限,还是网页用户的权限。组件本身有权限(不是被使用)这个概念吗?

谢谢,不胜感谢

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
私有的访问限制应该是在编译的时候限制的,然后运行的时候自然就限制了。不过如果成了PE文件,还是可以用逆向的办法调用它的。就是按照它的要求给它放入函数,然后CALL 它的入口点。PE时期应该就不存在私有的问题了吧。
    最近我也在学习COM,COM里的函数一般都是VIRTUAL的,VIRTUAL的函数好找,按照偏移就可以找到了。但是COM里边好象没有私有函数这一说,不过我到是看过 IDL 文件里边有HIDDEN的关键字。在 VC 2005里边获取一个COM 的 接口,VC 里边常规方法调用不了 HIDDEN的函数。不过按理说就跟前边一样,靠偏移能找到入口点就能调用了。
    权限的就不清楚了。
2009-2-19 22:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请教2楼的兄弟

编译的时候限制,是指他和预处理差不多的意思么?还是在生成代码在运行时由系统配合进行限制?(我个人感觉后者可能较大)

PE文件应该只是对象(类?)的描述?当把它实例化(创建对象?)所有的变量都是放在堆栈里的?那有什么机制可以防止其他对象的行为,修改某私有变量么?

(COM里的函数一般都是VIRTUAL的,VIRTUAL的函数好找,按照偏移就可以找到了。但是COM里边好象没有私有函数这一说,不过我到是看过 IDL 文件里边有HIDDEN的关键字。在 VC 2005里边获取一个COM 的 接口,VC 里边常规方法调用不了 HIDDEN的函数。不过按理说就跟前边一样,靠偏移能找到入口点就能调用了。)这一段我没太看明白,可以说仔细点么?
2009-2-19 23:21
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
PE文件与C++类的信息之间没有关系。

所谓对象的创建,或构造,在代码中,无非就是对构造器函数的调用而已。

而且,我们在构造器中是可以引用this指针的,说明对象的构造过程,实际上是先分配内存,再用这个指针作this指针来调用构造函数。这里,构造函数和一般成员函数的地位实际上是相同的(当然在语义上不同,但在生成的代码一级来看是相同的)

C++是静态类型语言(新标准加入了运行时类型信息),所谓类型安全,主要是指通过C++的合法手段无法访问“不可见”的成员,但是使用一些不合法的手段,仍然可以绕过这些限制,比如嵌入汇编,比如reinterpret_cast,前提是你知道对象的内存布局、虚表结构等相关的信息。

而在逆向工程面前,public或pirvate是没有一丁点意义的。只要知道一个对象的内存布局,知道了虚表的顺序,那么就可以对这个对象做任何想做的事。
2009-2-19 23:33
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习中,希望多看帖子,慢慢提高自己,能做一些对大家有意义的事,呵呵。
2009-2-19 23:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
版主太厉害了。。。表述得好清楚~~~~
2009-2-20 00:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好像明白了一些,另一些不知道该怎么发问了。

等我再累积些经验后再来请教,呵呵

谢谢版主
2009-2-20 09:46
0
游客
登录 | 注册 方可回帖
返回
//