逆向“恶搞锁机”程序_图文.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
逆向“恶搞锁机”程序 背景 汇编语言学习了一段时间了,一直感觉没有正经的做点东西,可是一般的应用程序用汇编做起来又觉得没有太大的意思,正好一个网上的朋友发来个小程序,运行后会创建一个新账户,并设置了密码,并且将当前的账号注销,登录新创建的账户,从而达到让用户登录不了的目的,代码不大,索性反汇编一下,因为是新手练习,并没有学习过如何进行真正逆向,所以大家不要嘲笑思路不新颖,工具使用不熟练,权当入门的练手记录。 使用工具 运行环境: 虚拟机上搭载的操作系统: 工具: 反汇编工具: 二进制编辑器: 目的 反汇编出恶意程序添加账号对应的密码,能够顺利登录进入到桌面。 逆向过程 观察运行现象 ①首先运行虚拟机,进入到虚拟机操作系统桌面中,将恶意程序拷贝直桌面上。 程序图标 程序图标 ②将虚拟机进行拍摄快照,这一步很重要,因为要比对运行恶意程序之前和之后的现象,可能需要反复比对,或是在调试时不小心运行了,有补救的机会,如果使用物理机进行反复的系统恢复,可能会麻烦的多。 ③运行恶意程序,观察现象。 注:不是所有的恶意程序放在虚拟机中运行就万无一失。 发现原来的账户已经注销,登录账户变成了“是”,并且再使用原来的密码已经登录不上了,从表象上发现,这个程序就是让电脑的使用者在运行程序后,无法登录到系统中,知道了这个现象之后,就大约知道这个程序的本意是什么了。 通过快照功能将虚拟机程序恢复。 确认恶意程序的开发语言 运行 工具,将恶意程序加载进去,发现改程序是由 进行开发的。 该工具不仅可以查看编程语言,还可以进行脱壳等工作,这次不做讲述。 反汇编过程 对于反汇编,本人虽然是刚刚尝试,但是总感觉, 如果不是将其所有功能进行还原的话,就不需要对所有的汇编代码都进行阅读,而是尽量的从现象和汇编代码上来了解其流程,进而推测其整个架构。 好了,以下只谈论针对该程序的分析思路。 将程序加载进中,因为虚拟机的操作系统为位的,该程序能够运行,所以肯定使用的位版本运行。 因为使用开发的,并且能够在上运行,所以文件结构选择。 反汇编成功后,可以看出函数的入口已经被反汇编出来了,为,可以判断出该程序应该为一个程序。这段程序很简单,就是进入函数入口后,将传入的参数、、、这四个参数再次压入栈中,然后再调用函数,压入栈的意思就是,将这几个参数再次作为函数的参数传入。调用完成后,返回,调用 ,为什么是呢?这个问题需要顺便说下栈平衡,简单的说下,就是在函数调用的时候,会将参数压到栈中,指针会减小,当函数返回的时候,表示函数的调用完成,将的指针再回到函数调用之前的位置之上,这样才能使当前的函数在调用完其他函数后,还能够正确的使用当前栈中的内容。回到为什么是这个问题上,因为压栈的参数大小为,怎么算的呢,可以看到代码, 所有参数的大小都是,也就是字节,而总共个参数,那么就是个字节的大小,转换成进制,就变成了,所以在函数调用结束后,需要用的大小来恢复栈。 为什么是呢? 为什么是呢? 好了,接着往下看代码,双击进入到 函数中。 又看到了一堆的代码,可以看到,调用了()函数与(),调用了()函数,然后还判断了()函数的返回值,如果等于时会跳到执行,如果不等于跳到别处执行。好吧,这样一层层的看,肯定能把程序看的明白,找到添加的账户密码,可是这样的话,估计要花费点时间。 但是反汇编的时候尽量的多观察观察现象,然后推测下程序的写法,然后直接定位关键代码处,说不准能够达到事半功倍的效果。 还记得在运行恶意程序之后,会有两个窗口弹出么?弹出完之后,当前的账户开始注销。 对就是这个对话框,当时的第一反应是,这个程序不会是应用程序调用命令来执行的吧,回想了一下,对于账户的操作应该是使用“ ”吧,莫不如看看这个程序用没有。 打开的 视图,简单的看了下,果然找到了这个命令,而且不止一个,哈哈,包括“ ”、’“ ”,这些个命令都是添加账户和修改密码,提升账户权限的命令,果然和我想的一样啊。 “ ” “ ”等串存放地 看看什么地方使用的吧,双击进入到文本视图中,可以看到在节中,有“ ”串的定义,那么为什么放在这呢,因为的应用程序一般都是结构的,而结构中会将代码中的只读数据、引用的外部函数,以及将来给外部使用的导出函数放在这个节中,就是所说的导入表,导出表。统统都会放到中,而代码放在什么地方呢,会放在中,好了,这部分的相关内容可以参考下文件结构的相关资料。 使用交叉引用,找到使用这个串的函数位置,看下这段代码的上下内容。 使用“ 使用“ ”的地方 上下内容为 [] [] , 看到这段代码之后,发现又是一顿压栈,然后进行函数调用,而参数是什

文档评论(0)

kfcel5889 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档