c语言程序工作流程

http://blog.csdn.net/wangningyu/article/details/5044864
刚才无意间发现了此代码,研究了半天也没搞懂(据说病毒是最难的程序。)
问几个问题:最开始那个class作用是什么?
汇编代码和c语言是如何互相联系的?
没看到他autorun.inf的代码。这个他如何做到不写出代码的?
假如我想添了我自己的函数,该改哪里?
不是class,是里面的Diskinfo()

病毒这种程序,不是难,是了解少,要是从事这行的就熟的很。其中最重要的是感染部分的代码。给你说一些病毒常用的技术吧:代码重定位,两行汇编就可以实现;定位kernel32.dll基址,然后找到LoadLibrary和GetProcAddress,找到了这两个,其他模块和API随便调用了。一般流程:遍历盘符,遍历文件夹,依次打开文件,判断文件头标志,一般是开头"MZ",Dos插桩后的"PE",都满足就继续,否则不是PE文件;然后以读写权限打开,这时可能权限不够,所以你给的那个代码才要提升权限;接下来就是写入病毒字节码,节间隙空间够 就插入,不够就新建一个节;最后是关键,重构PE的节表、代码段长度等等PE结构中的一些标志。编写的话,最好用汇编,C也行,但要压缩体积,病毒都很小;知识方面,首先要了解windows上的PE文件结构,linux上的就是ELF文件结构;然后,win编程,进程,线程什么的;最后就是实践了。补充一下:编写和调试汇编程序比较麻烦,需要点耐心。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-12
调试程序一般应经过以下几个步骤:

1先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。而这一步骤往往容易被人忽视。有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。

为了更有效地进行人工检查,所编的程序应注意力求做到以下几点:应当采用结构化程序方法编程,以增加可读性;2尽可能多加注释,以帮助理解每段程序的作用;3在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。

2在人工检查无误后,才可以上机调试。通过上机发现错误称动态检查。在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。本回答被提问者和网友采纳
相似回答