




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 动态链接库编译与反编译的研究与实现 张果摘 要:本文通过编写简单的可执行程序,引用两个不同语言编写的dll。然后再进行反编译dll,在可执行文件中重新引用,实现dll反编译成功被程序多次引用的效果。关键词:可执行程序;动态链接库;编译;反编译:tp312 :a :1671-2064(2019)11-0019-02可执行程序,是可自行解压缩文件的集合,包括安装的所有文件。运行可执行文件,可将软件的所有文件释放到硬盘上,完成修改注册表,修改系统设置、创建快捷方式等工作。在windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些
2、相对独立的动态链接库(dll文件),放置于系统中。dll中存放各类程序的函数(子过程)实现过程,当程序需要调用函数时需要先载入dll,取得函数的地址,最后相应的dll会被调用。使用dll的好处是程序不需要在运行之初加载所有代码,且通过使用dll,程序可实现模块化,由相对独立的组件组成。dll有助于促进模块式程序的開发,可开发进行模块式体系结构的程序,因此在重复使用dll时,研究将dll如何进行反编译重复利用显得特别重要。本文基于asp.net技术,.net framework框架,visual studio 2010 集成环境,c#和visual basic语言进行开发。1 动态链接库(dll
3、)实现文中c#类实现的dll功能为图像色彩反转方法和获取系统当前时间方法,visual basic实现的是将输入的原字符串进行逆序的方法和将原字符串进行大写转换的方法。1.1 dll开发过程本地打开visual studio 2010,选择新建项目,选择visual c#,选择.net framework 4.0框架,选择类库,生成相应的解决方案,打开类,编写该dll所要实现的功能。因本文着重实现如何编写dll,如何在应用程序中引用dll,然后反编译dll,验证再次被应用程序引用是否成功,因此,dll功能及应用程序功能相对简单。1.2 生成dlldll功能编写完成后,选择visual stud
4、io工具栏中的生成,选择其下的生成解决方案,在该解决方案的debug目录下可以找到生成的dll,该dll可被应用程序直接引用。2 可执行程序实现可执行程序引用dll的方法,将系统时间、图像色彩反转、字符串逆序通过界面展示出来。2.1 开发过程本地打开visual studio 2010,新建项目,选择visual c#语言,选择windows窗体应用程序,.net framework 4.0框架,确定,解决方案建立成功,引用之前已生成的两个dll。新建form1,form2两个设计窗口,界面化实现两个dll功能,在后台cs代码中引用命名空间using csharpdll;using vbasi
5、cdll。界面如图1所示。运行可执行程序,界面能够正确显示当前系统时间、图片颜色反转及字符串逆序的功能,界面如图2所示。2.2 程序发布应用程序通运行测试功能正确显示,将该应用程序发布为可执行的应用程序,安装在个人计算机上。应用程序发布主要分以下几个步骤:(1)在vs中选择“新建项目”(“其他项目类型”(“visual studio installer”(“安装项目”。(2)确定后,添加要发布的应用程序、设置应用程序的安装时所必备的系统环境、设置程序安装时的路径及其他信息。(3)应用程序发布基本设置完成之后,选择“生成”(“生成解决方案”,若成功,则显示生成成功,成功生成解决方案后在debug
6、文件夹中有需要的安装包及系统所必备的环境下载,到此应用程序发布完成。3 dll反编译应用程序引用的dll,经过一段时间后,不能清晰记忆该dll中所包含的方法,因此需要将dll进行反编译。本文针对.net程序且程序没有使用混淆技术的情况下,使用reflector将.net程序集中的中间语言反编译成c#或者visual basic代码。3.1 反编译代码实现reflector工具安装完成后,选择我们反编译后的语言为c#,.net框架为.net 4.0。在file菜单下选择“open assembley”,选择需要反编译的dll,加载后显示dll中命名空间、类及方法的层级关系,也可直接双击打开查看方
7、法。选中要导出的dll,选择“export source code”,将源代码导出到默认的目录,若导出成功,则会有相应的提示。反编译成功后,打开生成的项目文件,可以看到不管是c#语言还是visual basic语言,都按照reflector所配置的导出语言c#生成。将导出的项目文件使用visual studio 2010打开,c#语言反编译前后与源码一样,visual basic语言反编译后按照c#语言语义进行了重组。visual basic反编译前后代码对照如图3所示。3.2 可执行程序重引用反编译dll将dll反编译后的类文件编辑再重新生成dll,在可执行程序中重引用后,运行可执行程序,可
8、得到正确的效果,在反编译后的dll中,加入了显示当天星期的方法和将字符转换为大写的方法。界面如图4所示。至此,编译dll,引用dll,反编译dll及被重新引用这一过程全部实现,并得到验证,可执行程序运行后显示正确结果。4 结语本文以.net framework为框架,以visual studio2010为开发环境,分别采用visual c#和visual basic为开发语言。编写简单的类库生成dll,编写简单的可执行程序,该可执行程序中调用dll,再通过reflector工具反编译dll,反编译的dll生成的源码使用visual studio2010打开重新编辑,生成相应的dll,在可执行程
9、序中再次引用的时候,该反编译后的dll能被正确引用,得到相应的结果。本文验证了reflector工具能够反编译dll,且能再次被可执行应用程序正确引用,但该reflector工具只针对.net framework框架开发的dll,对其他框架的类及dll不适用。后续查找及研究实现一款能对其他框架开发的dll反编译工具,并学习其他框架开发工具对反编译的dll进行验证。参考文献1 christian nagel,jay glynn,morgan skinner.c#高级编程第八版m.北京:清华大学出版社,2013.2 benjamin perkins,jacob vibe hammer.深入理解c#第三版m.北京:人民邮电出版社,2014.3 daniel m.solis.图灵程序设计丛书:c#图解教程第四版m.北京:人民邮电出版社,2013.中国科技纵横2019年
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行业务英语试题及答案
- 银行信用卡员招聘试题及答案
- 卫生专业遴选试题及答案
- 银行小组类面试题及答案
- 烹饪专业试题及答案
- 机车专业试题及答案
- 水专业试题及答案
- 黑龙江省大庆市2025-2026学年高三第一次教学质量检测地理试题(含答案)
- 河北省唐山市2025-2026学年高三上学期开学物理试题(含答案)
- 江苏省徐州市2025-2026学年七年级语文第一次月考复习试卷(含答案)
- 小学数学五年级上册《轴对称的再认识(一)》课件
- 《关于加强和改进新时代师德师风建设的意见》培训课件
- 长征地故事(五岭山、乌蒙山、岷山)
- 影视广告创意设计和制作PPT完整全套教学课件
- QC成果提高项目部消防应急能力
- 中等职业学校毕业生登记表(1)正式资料doc
- 第十四章滚动轴承相关设计
- GB/T 707-1988热轧槽钢尺寸、外形、重量及允许偏差
- GB/T 32294-2015锻制承插焊和螺纹活接头
- GB/T 29340-2012锅炉用水和冷却水分析方法氯化物的测定硫氰化铵滴定法
- GB/T 14456.1-2017绿茶第1部分:基本要求
评论
0/150
提交评论