window下进程调试基础知识(有彩蛋哦!)

年前最后一篇,要整点有深度的,后面再加一个彩蛋,不错不错不错……!

先扯点题外话!

下班路过有人围观看烟花,一个哥们一脸不屑的说“有什么好看的?浪费钱还污染环境”,旁边一个妹子一脸鄙视地回应“你喜欢看美女不?”……我默默看着那个哥们低着头离开了,看了一眼妹子,又看了一眼烟花,我默默的照了一张相,随后闪人!

window下进程调试基础知识(有彩蛋哦!)_第1张图片

……………………………正文分割线………………………

先介绍几个windows下的进程调试器:ollydbg、PyDbg、Immunity debugger

寄存器可以被认为是位于CPU上的小型存储器,CPU获取数据最快的方式就是直接访问寄存器。在x86指令集中,一个CP具有8个通用寄存器:EAX、EDX、ECX、ESI、EDI、EBP、ESP、EBX。

EAX寄存器也被称为累加器,用于协助执行一些常见的运算操作以外用于传递函数调用的返回值。在X86指令集中很多经过优化的指令会优先将数据写入或者独处EAX寄存器,在对数据进行进一步的计算。大多数基本的运算操作如:假发、减法和比较运算都会借助使用EAX寄存器来达到指令优化的效果。还有一些特殊指令如:乘法和除法则必须在EAX寄存器中进行。

若之前所属,函数调用的返回值被储存在EAX寄存器中。牢记这一点很重要,你可以基于存储在EAX中的值来判断一个函数调用所执行的操作是成功还是失败了。除了布尔类型的返回之外,EAX中存数的也可能是一个确切的函数返回值。

EDA是一个数据寄存器,这个寄存器可以被认为是EAX寄存器的延伸部分,用于协助一些更为复杂的运算指令,如:乘法和除法,EDA被用于存储这些指令操作的额外数据结果。EDA也可以用于通用目的的数据存储,但是其最常见的用法是和EAX寄存器联合使用,以协助执行这类更复杂的元算。

ECX寄存器也被称为计数器,用于支持循环操作,存储一个字符串或者进行计算就是典型的循环操作。需要特别注意的是ECX寄存器通常是反向计数的,而非正向计数。我们用以下的Python代码片段来向你说明这个问题。

在x86汇编语言中,那些涉及数据处理的循环操作依赖于ESI和EDI这两个寄存器,以实现高效的数据操作,ESI寄存器也被称为源地址寄存器,这个寄存器存储着输入的数据流的位置信息。EDI寄存器则指向相关数据操作结果的存放位置,我们称之为目的变址寄存器,可以简记为ESI用于“读”,而EDI用于“写”。在数据操作过程中使用源变址索引和目的变址寄存器可以极大提高程序运行的效率。

ESP和EBP寄存器分别被称为栈指针和基址指针,这些寄存器用于控制函数调用和相关的栈操作。当一个函数被调用时,调用参数连同函数的返回的地址将先后被压入函数栈中,ESP寄存器始终指向函数栈的最顶端,有此不难推断出在函数调用过程中的某一时刻,ESP指向了函数的返回地址。EBP寄存器被用于指向函数栈的低端。在某些情况下,编译器为了指令优化的目的可能会避免将EBP寄存器用作栈指针。在这种情况下,被释放出来的EBP寄存器可以向其他任何一个通用的寄存器一样另左它用。

EBX寄存器是惟一一个没有被指定特殊用途的寄存器,它可以被作为额外的存储单元来使用。

另外一个应当被提及的寄存器是EIP寄存器。这个寄存器始终指向当前正在执行的指令,当CPU穿行于二进制代码中时,EIP寄存器中的值随之更新以实时的反映当前代码所执行到的位置。

一个调试器应当能够轻易的读取和修改这些寄存器的内容,每一个操作系统都会提供一个接口做组来使得调试器能够与CPU进行交互,以获取或修改这些寄存器中的值。

…………………………………分割线…………………………………

不知道有多少人会看到这里!

总结下这一年吧!好像好上一年也没有太大变化,体重还是那样!那就这样吧,也没啥写的了!

最后来一个彩蛋!

window下进程调试基础知识(有彩蛋哦!)_第2张图片

这一年,感触还是挺多的,作为过来人,给还没工作和刚开始工作的人一点意见吧!

1、工作不要给自己定下太高的目标,除非你真的有做一番事业的心,并打算为梦想去努力,否则很可能一身疲惫,还搞得自己很自卑,其实我们大部分人真的都只是芸芸众生中最普通的一个,扔在人群中甚至很难被找到!也许有人会说做人要上进?这里我问一下,上进想要得到的是什么?若只是从小被灌注的上进思想,或者说是上进是给其他人看的,那这样的上进是一种困住人的枷锁!当然,若是你有着很明确的目标,明确知道自己奋斗拼搏的是什么,那放手去博吧,苦和委屈全部吞进肚子,只要不是特别“笨”,我相信五年十年后肯定有收获的,至于这五到十年失去的东西就不要去追忆了!

2、不要给自己定太高目标……是不是等于不思进取了?肯定不是啊,其实生活中很多东西,尤其是见识和知识都是日积月累起来的,只要你认真去做一件事去积累,五年十年后你能够了解到的东西绝对比你想象的多得多,所以给所有人一个建议,没啥事的时候多看看书,各行各业都可以涉略下,对什么感兴趣对什么好奇看什么就可以,当然小说这个东西不算啊(虽然我是写小说的,但……你懂得,大部分小说没什么营养),随着知识的积累,很多感觉神秘的东西、技术被揭开面纱,那种感觉我觉得很爽啊!偶尔还可以卖弄下!

3、这两年互联网热,薪资高,很多喜不喜欢这个行业的人都进来了,我不否认这个行业是我们穷人家出身的孩子快速积累财富的一个途径……怎么说呢?对于已经踏上这个行业的人已经没什么可说的了,唯一说的(也是对自己说的),多多运动吧(动脑多,体力劳动少,容易猝死

,容易肥胖),为了能够让自己多活几年,没准多活一年就能够见证人类科技的突破,没准人就可以不死了!对于没入行的,还在大学中的,建议你们多找找挣钱的路子,我觉得其实还是很多的,大学真的是能够尝试一些想法的最好时间段,一旦错过就不会再有了!当然你当真没什么想法,只是想找一份养活自己的工作,也没必要排斥程序员!程序员的特点就是“挣得多、花的少、死的早!”,开玩笑,我觉得程序员也不见得花的少,死的早,挣得和有些行业比起来根本不值得一提!写代码时我最烦的是需要处理的逻辑太复杂,项目规划太混乱,开发时间不给够,由于项目底子没打好、水平限制、项目迭代过快线上老是出问题,需要24小时待命解决问题!唉!不过那个行业底层人员都不容易,为了支撑上层人员的梦想,底层人员只能付出辛苦!

4、昨天看了一个有关人类的纪录片,看到第三世界的人们还未解决温饱问题,看到身处战争中的人失去所有至亲,辗转逃到多个国家,结果却是一再被驱逐,对着屏幕他要求很简单,他不求当地政府给予他什么,只求当地政府能够让他生活在那里,但那对他来说已是奢望!一个孩子的父亲,每次拿起枪内心就充满了畏惧,他怕战争中自己死在他人手上,也怕有人死在他的手上,但他又不得不拿起枪,为了自己的家园,为了自己的家人!看了这些,我告诉自己我又有什么可以抱怨的呢?今天中午吃饭回来碰到技术部老大,和他聊到这些,他说我们就闷头活着吧,让自己活的好些,让自己的家人活的好些!没错,这就是我应该做的!改变不了世界,改变不了很多事情的我,至少可以尽我所能让家里人生活的好些!还能尽些绵薄之力帮助下困难的人!今年,我一共捐出去900左右,其中一件让我感动的事,我们学校一个校友白血病,学校帮忙筹款,预计筹款60万,最后筹款72万多!感动,心里温暖,这是我一个众多参与者的内心最直接的反应,那位校友和他的家人更加不用说了,也许钱不能真正的解决他的问题,但至少能够让他在这个寒冷的冬天感到温暖,我想那也将转换成他对抗病魔的一种力量!

5、生活也许比我们想象的简单很多,当然也可以比我们想象中的复杂很多!简单还是复杂一半是社会决定的,一半取决于我们自己,生活中的各种世俗、各种枷锁能卸掉就卸掉吧!不去攀比,不去挣没必要的面子,不去急功近利的,做好自己的,自己、家人、在乎的人平安健康就是最简单最真的幸福!

6、财富的积累!我现在隐约觉得这件事是水到渠成之事,不奢侈不乱花,可能除了买房(车不知道算不算,我觉得不算必需品)有些压力,生活其实没什么压力。算一笔账,现在一个月4000应该很平常(算不上高)的薪水了吧(北上广除外),到手的差不多3000多些吧,两个人的话,一个月有6000,必要开销3000应该差不多了吧……忘记一个东西了,首付这个东西,若是家里条件不错,可以帮忙出了会更好,不能出的话那可能要找一份相对高薪点的工作了……假设家里出了首付的钱,公司走正常的五险一金,贷款年限长一点,住房公积金外也不用交什么钱!最主要的是你不可能一直都是4000的薪水,若是你一直都是4000的工资,我觉得真的是不涨薪(心)啊!若是首付家里没有办法,自己就努力下,咬牙一年在工作中学习,升职加薪不是难事,攒个三五年也不是难事!当然这样经历三五年后你的眼界可能就不一样了,也许你就不会倾向安稳,向我一样用最笨的日积月累来积累财富了!

上面的计算若是有误的话请见谅,由于这个计算没有什么考证!

7、扯得差不多了,最后提前祝大家新年快乐,工作中有封版一说,这篇日志就是我今年的“封版”了,过年的时候做的两个活动会推出来(为了保证我们能够第一时间响应线上问题,公司特意给配了无线网卡,我不知道我应该感到开心还是不开心?),希望不要出什么问题,让我过一个“平平淡淡”的春节,以便我年后有一个不错的心情投入2016年的“战斗”!

最后不知道有多少人看到这里了,看到的人麻烦留下点什么,一个赞或者一条评论都可以!

你可能感兴趣的:(window下进程调试基础知识(有彩蛋哦!))