加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

C语言逆向之函数的识别

发布时间:2021-04-19 17:06:34 所属栏目:编程 来源:互联网
导读:程的过程中,需要阅读大量的源代码才能提高自身的编程能力。同样,在做产品的时候也需要大量参考同行的软件才能改善自己产品的不足。如果发现某个软件的功能非常不错,是自己急需融入自己软件产品的功能,而此时又没有源代码可以参考,那么程序员唯一能做的

程的过程中,需要阅读大量的源代码才能提高自身的编程能力。同样,在做产品的时候也需要大量参考同行的软件才能改善自己产品的不足。如果发现某个软件的功能非常不错,是自己急需融入自己软件产品的功能,而此时又没有源代码可以参考,那么程序员唯一能做的只有通过逆向分析来了解其实现方式。除此之外,当使用的某个软件存在 Bug,而该软件已经不再更新时,程序员能做的并不是去寻找同类的其他软件,而是可以通过逆向分析来自行修正其软件的 Bug,从而很好地继续使用该软件。逆向分析程序的原因很多,有些情况不得不进行逆向分析,比如病毒分析、漏洞分析等。

可能病毒分析、漏洞分析等高深技术对于有些人来说目前还无法达到,但是其基础知识部分都离不开逆向知识。下面借助IDA来分析由VC6编译连接C语言的代码,从而来学习掌握逆向的基础知识。程序代码中,自定义函数test()由主函数main()所调用,test()函数的返回值为int类型。在test()函数中调用了printf()函数和MessageBox()函数。将代码在VC6下使用DEBUG方式进行编译连接来生成一个可执行文件,对该可执行文件通过IDA进行逆向分析。

以上代码的扩展名为“.c”,而不是“.cpp”。这里用来进行逆向分析的例子均使用DEBUG方式在VC6下进行编译连接。

2. 函数逆向分析

大多数情况下程序员都是针对自己比较感兴趣的程序部分进行逆向分析,分析部分功能或者部分关键函数。因此,确定函数的开始位置和结束位置非常重要。不过通常情况下,函数的起始位置和结束位置都可以通过反汇编工具自动识别,只有在代码被刻意改变后才需要程序员自己进行识别。IDA可以很好地识别函数的起始位置和结束位置,如果在逆向分析的过程中发现有分析不准确的时候,可以通过Alt + P快捷键打开“Edit function”(编辑函数)对话框来调整函数的起始位置和结束位置。“Edit function”对话框的界面如图1所示。在图1中,被选中的部分可以设定函数的起始地址和结束地址。

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读