- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件安全实验第一次实验报告
软件安全第一次实验报告班级:2010211316 学号 姓名:曹梦晨1、目标读懂并能够独立编写密码验证的小程序。运行Ollydbg,并学习用其调试密码验证小程序。通过修改汇编语句来修改程序的判断条件,改变程序的运行路线。2、测试步骤与结果2.1 生成实验程序图2-1 生成实验程序将目录下的crack_me.c文件用VC6.0下进行编译,生成对应的exe文件(Debug版本),发现改程序当且仅当输入“1234567”时,会输出Congratulation! You have passed the verification!。(P.S.尝试输入超过1024个字符程序会崩溃,但是不会登陆成功)图2-2 缓冲区溢出的效果2.2运行Ollydbg调试程序图2-3 定位汇编代码(1)用ollydbg打开这个程序,找到当前代码行,并分析接下来的密码判断机制,可以定位到核心的几句汇编代码如下:图2-4 定位汇编代码(2)即,JE SHORT 004010F6。如果成功,就跳到该地址,并打印成功信息。否则将打印不成功信息,并跳而该处代码为JMP SHORT 004010A5。A5是该循环的起始点,因此会继续循环,打出输入密码提示信息,直到输入正确的密码,才能退出本模块。所以这里使用ollydbg将JE SHORT 004010F6修改为JNE SHORT 004010F6可以使得对的变成错的,错的变成对的……图2-5 修改汇编代码图2-6 保存破解后的程序将新生成的程序overflow2.exe用ollydbg加载(因为原来的程序没有加getch()或者system(“pause”),所以直接运行,若成功会直接退出),可以检验修改成功,程序运行效果如下图所示:图2-7 破解后程序的运行结果3、测试结论Ollydbg是修改程序的良兵利器,重要的是通过程序的调试运行,弄清程序的结构和运行顺序,定位到关键代码行,并根据自己的需求进行修改。而我们平常编写程序时,除了考虑到代码本身是否隐藏漏洞外,还要考虑到攻击者可以进行反汇编和修改,因此程序的结构可以刻意进行隐藏。如对加密程序的算法进行混淆,以达到迷惑攻击者的目的。4、思考题4.1 方法一:思路:由于错误信息、正确信息处理代码是连续的,这里可以使用NOP指令覆盖掉密码错误的处理代码,使其顺序执行到正确的处理代码。实验截图如下:图4-1 程序修改后的汇编代码示意(1)图4-2 程序修改后的程序运行结果示意(1)生成的程序保存为overflow1.exe,由于源程序没有暂停程序的函数,所以输入任何密码都会视作成功,打印成功提示并退出程序。4.2 方法二:思路:直接修改内存中存储的数据,即把密码“1234567”修改为自己想要的密码,通过程序中的压栈语句定义到密码的存储位置为:0042301C,并编辑该内存中的数据:图4-3 程序修改后的程序运行结果及修改过程(2)但是这样只能保证在单次运行中程序正常运行,不能生成破解后的程序。4.3 方法三:思路:修改判断语句“CMP DWORD PTR SS:[EBP-4],0”,是得ZF一定为1。考虑到之前是“MOV DWORD PTR SS:[EBP-4],EAX”,所以直接将该语句改为:“CMP DWORD PTR SS:[EBP-4],EAX”。图4-4 程序修改后的程序运行结果及修改过程(3)生成的程序保存为overflow2.exe,由于源程序没有暂停程序的函数,所以输入任何密码都会视作成功,打印成功提示并退出程序。4.3 方法四:思路:直接修改判断密码是否正确的子函数的代码,将返回值EAX始终改为1即可,即将“CALL(调用strcmp的语句),改为“MOV EAX,0”图4-4 程序修改后的程序运行结果及修改过程(4)生成的程序保存为overflow3.exe,由于源程序没有暂停程序的函数,所以输入任何密码都会视作成功,打印成功提示并退出程序。
您可能关注的文档
最近下载
- TSZEIA 014-2023 二手手机出口质量要求.pdf VIP
- 2025年高考湖南卷物理真题 含答案.pdf VIP
- 个股动量效应的识别及“球队硬币”因子构建.pdf VIP
- 微机型母线保护分析与应用.pdf VIP
- (人教版)一年级上册科学 观察物体教案.doc VIP
- 学校EPC工程项目实施的重难点分析及对策.pdf VIP
- 典型事故五:内蒙古泰和煤焦化集团有限公司“4.8”爆炸事故.pdf VIP
- 2020款上汽通用别克君越_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf
- 基于新课标“教学评”一体化的小学语文教学设计与实施 培训课件.pptx
- 陶艺课程--校本特色课程-专题讲座.pptx VIP
文档评论(0)