Profil de leicerCogito, ergo sumPhotosBlogListesPlus ![]() | Aide |
Cogito, ergo sum我思故我在 |
||||||
|
03/12/2007 最简单的逆向^_^日志好长时间没写了,最近一段时间对逆向工程(Reverse Engineering)感兴趣了,其实现在的状态逾期说是Reverse Engineering,不如说是Cracking。说来惭愧为什么突然又想起搞这个了呢,其实这个东西早有接触,不过现在将其付诸实践而已,最大驱动力是想对三国志11进行改造,想给他加入网络功能,毕竟电脑太傻了 :-& 可是呢,一看san11的程序文件,SafeDisc 4.60.000 -> Macrovision [Overlay]!!!傻了!这个壳可是猛壳,google了半天发现是个很牛的商业的壳,几乎没有任何资料!晕了!本来想搞搞PE就可以了,没想到还要脱壳了……无语,这样就陷了进来,也不管他有没有“实际意义”了,爽了就可以了! 到现在快两周了,也看了很多的PE文件格式了,对PE有了一定的了解,也看了看雪上的基础板的OllyDBG 入门系列,那就班门弄斧一下,给windowsxp的calc.exe运行开始加个MessageBox吧~ 我们开工吧!工欲善其事,必先利其器。我们的工具是WinHex、OllyDBG、PEiD、LordPE、记事本,当然了还要windowxp。对象是winxp下的calc.exe计算器程序。这个可是及其简单的,高手不要笑话俺呀!新手上路嘛^_^ 用PEiD不是为了查壳的,倒是为了用它的一个功能 Cave Finder 来看各个区块的空闲情况。
图1 PEiD 的 Cave Finder 功能 图2 calc.exe的区块空闲情况 从图2中我们看到.data块中只有0x27大小的空闲,省着点用吧,懒的增加新的块了,毕竟不熟悉,况且还有BoundImport的问题哎,$MS太抠门了!而代码段.text就富裕多了,我试着将字符串放在.text中,可是就是不行,看来数据还是要放在.data区呀~这个还有仔细看一下,探讨一下! 就是加个messagebox,因此看看calc.exe中的输入表(import table)中有MessageBox吗?就地取材吧,这样最简单,当然用lordPE可以很简单的加入输入函数。lordPE上场了! 05/07/2007 理解是何物呢?凡能吸入我著作中空气的人,他就会知道,这是高岗上的空气,是使人精神焕发的空气。一个人必须加以培养以适应这种空气,否则他就会有受寒的危险。——尼采 (Nietzsche) 以下的文字到不是围绕上面的话讲的,只是觉得挺有味道的,尼采真是个自傲的狂人,但是不是疯子! 在自修时突然想到,“理解含义”是什么意义呢?面对一个句子,例如上面的一句话你是怎样建立的语义空间的,更不用问你是怎样体会到里面的深一层的东西,看到尼采的自傲了!机器或程序可以体会到里面的“含义”吗,藏在文字符号中的“文字”它可以看到吗?塞尔的中文屋子(附一)说明了一些问题,可是对于整个屋子,它懂这个的含义吗?子非鱼,岂知鱼之乐,既然它都可以翻译,怎么说它不懂呢?那屋里的人和工具书就像人脑中的神经元,对于单个的神经元,它当然不懂这些东西的含义,可是对大脑的全体却懂了,那道理不是一样吗?其实再者对一个人来来讲这样做他也是不懂中文的,那怎样要求机器可以这样明白呢?我觉得这个问题没触动到理解问题的研究。 句法不能解决语义的问题,但是也打开了窥视语义空间的一条裂缝。奇妙的神经元连接就让人理解藏在深层次的东西,怎样让机器也理解呢?我现在的知识根本看不到希望,不知道,专家们是怎么想的? 附一: 中国语屋实验的大意是: 读《穷爸爸,富爸爸》 之二我的QQ宠物又饿了,刚还向同学讨食吃呢,其实后来发现自己有300块钱可以买的。哎,人家腾讯太会挣钱了,什么都是QB,夸张的是1QB=1元!!我看我的家教同学玩了会宠物就轻松的花掉了还几块钱,境界不同呀!人家是雇主,我是雇员呢~ 穷爸爸总是说:“我从不富有”,于是这句话就变成了事实。富有的爸爸则总是把自己说成是一个富人。他拒绝某事时会这样说:“我是一个富人,而富人从不这么做”,甚至当一次严重的挫折使他破产后,他仍然把自己当作是富人。他会这样鼓励自己:“穷人和破产者之间的区别是:破产是暂时的,而贫穷是永久的。” 可是我对以后的规划确实和书中不太一样的,我毕业真的没想过去哪个大公司什么的,就想自己要努力 ,努力在学术上有所成绩,一直留在大学里,当个教授什么的,留在这个安静的地方,没那么多的纷扰,这也是需要实力的,莫非我这也是在为别人打工?我觉得这是在为自己打工,为自己的理想而活,生活中不是只有钱的,当然没有钱是万万不能的,没钱哪里来试验设备,怎样雇佣比自己更聪明的人,“闭口不谈钱就像依赖钱一样是一种心理疾病。”我想我没有有意的闭口不谈钱,也没觉得谈钱就是俗,只是我的有些哲学和这本书上还是很像的,不为钱而工作,让钱为我工作,钱本身不是资本,并没什么意义,倒是它换做实物才实现了它的价值,可能是一束娇艳的花朵换来心上人的欢喜,可能是股票、国债为你带来收益,但是单单数字或纸币却是没什么意思的。 可是我的行动验证了上面的想法了吗?我想似乎是没的,而且前些日子和林涵的谈话,她也很清楚的指出了我的这点,我去家教浪费我的宝贵的学习时间,林涵说你可以拿这个时间来学习更重要的东西,既然我不想为钱工作,可是我为什么抱着这样纯正的挣钱的目的去家教呢,有什么堂而皇之的理由吗?当然不会是教学相长。是为了让自己的财政更可以让我自己支配些罢了,而且用这些被我平时花的不见了影子的钱买了台 used IBM Thinkpad ,当时平时只用自己挣的钱吃饭,没怎么动卡上的钱。我自己觉的还好,我有了自己需要的东西,我不认为它对我们是奢侈品,应该是耐用品,是学习工具。因此我也是有强烈的明确的目的选择了对于我们现在的水平而言,最高效率的挣钱方法——每周付出6个工作的时间。可是实现了目的后,我似乎是停不下来了,这也许就是贪欲,似乎没了每周的收入,心里就觉的怪怪的,不对劲,也有那个家长的原因,她很信任我,而且教那个同学信息学奥赛也一年了,可是遗憾的是我没太看到希望,希望他可以再接再厉!我也得更加用心! 毕竟是需要钱。俗是俗了点,就是诗也是吃饱饭吟出来的~要不早饿晕了…… 04/07/2007 读《穷爸爸,富爸爸》 之一一个爸爸爱说“我可付不起”这样的话,而另一个爸爸则禁止用这类话,他会说:“我怎样才能付得起呢?”这两句话,一个是陈述句,另一个是疑问句,一个让你放弃,而另一个则促使你去想办法。那很快就致富的爸爸解释道,说“我付不起”这种话会阻止你去开动脑筋想办法;而问“怎样才能付得起”则开动了你的大脑。当然,这并不意味着人们必须去买每一件你想要的东西,这里只是强调要不停地锻炼你的思维——实际上人的大脑是世界上最棒的“计算机”。富爸爸时常说:“脑袋越用越活,脑袋越活,挣钱就越多”。在他看来,轻易就说“我负担不起”这类话是一种精神上的懒惰。 轻易说“我负担不起”这是懒惰,对的,讲的不错,我们更重要的是开动脑筋,自己想办法。和平时作题目也是一样的,急于说我不会也是懒惰,你就放弃了思考的权力!本来只是知道这本书挺有名的,正好室友的女朋友带来了这本书,我就近水楼台先得月,读读这本书了。也学习下如何理财来着,前些日子林涵还和我讲过关于这方面得事情呢,其实讲得我挺郁闷,现在我也要好好学习下了,哈~ 03/07/2007 C++ 之 STL以前用 Microsoft Visual C++ 6.0 总是不支持像 <iostream>这样不加 .h 的书写,我就搞不懂了,莫非不支持 ANSI/ISO ?不过VC++6.0对ANSI/ISO的支持确实不好,而且对STL的支持也有很多的问题,似乎VC++.NET好了些,还有C++ Builder,当然还有g++.后来在 gc++中试了试也是通过不了,奇怪了,后来才知道是自己的一个问题,原因是没有加上 using namespace std; 看来又得看看 namespace 的东西了,哎!反正那次受了刺激,决定彻底改写 工资管理系统 了,而且暑假在学校的重要的事情之一就是搞定 C++. 现在抓紧时间对STL,Template进行些了解,然后搞定那个垃圾程序,毕竟在12号还要检查的,期间还有那么多的考试,想起今天的物理考试我就郁闷的不得了!本来认为自己一定没问题的题目竟然做不出来的,太打击我了! 我尝试了下vector,vector<Base *> v; 当 push_back() 进多态派生类用,调用v[1]->pr(),其中pr()是虚函数。实现了多态,那个程序我也也就又有了点感觉了~不过这个STL真的是好东西!! 以下附下我的测试代码吧,太小儿科了,没办法还在修行中嘛: #include <iostream> using namespace std; class Base{ class D1 : public Base{ class D2 : public Base{ int main(){ // v[0]->pr();v[1]->pr();v[2]->pr(); 结果是: Base here! 28/06/2007 程序设计实习作业之 工资管理系统 (续3)这个windowns Live writer 慢的真是可以啊!光是打开就花了我大把的时间呢!哎,没办法,忍了~ 这里提个刚刚体会到的一个小经验,我们有时候只是想将指针中的数据传给新的指针,而不是地址,这两者是有着本质的区别的,例如: LINK_EM *p = (LINK_EM *) malloc(sizeof(LINK_EM)); 这便是传地址了,当你改动p时,也会改动到developer,也许这并不是你想要的结果。再看如下: LINK_EM *p = (LINK_EM *) malloc(sizeof(LINK_EM)); 这回就是传值了,当你改动到p时,并不会改动到developer。 总之原则是: YOU MUST KNOW WHAT YOU ARE DOING!! |
|||||
|
|