牛刀小试:记某一软件反向工程试验
2011-11-22 17:20
253 查看
因为需要,需要解除一个软件的License限制,所以进行一次反向工程试验,特将过程记录下来。
1.分析目标软件编程语言:经过查看安装手册,发现需要安装DOTNET2.0,呵,看来是DOTNET下的系统了。2.尝试使用Reflector反编译:用:Reflector,加载主程序,提示不是DOTNET格式程式,看来加壳
3.解壳:这时首先得用到NETUNPACKER这个强大而通用的家伙,果然UNPACK一堆DLL与EXE.
4.再次使用Reflector加载上面得到的DLL:使用查找功能,查找提示限制时的字符“过期”,无法找到。同时发现缺少一个关键的DLL(WebGi*.dll(全名略去,呵,软件公司别找上我)
5.因为担心是我使用是未使用到该DLL的功能 ,导致使用NETUNPACK未能解出该DLL,通过反复操作第4步与第5步,还是无法得到。
6.上OLLYICE: 附加调试的程序,在使用该系统时发现一个错误,错误提示:frmBZZHTJ.fixgdb()调用这个方法有问题,看错误是在上面缺少的这个DLL中抛出来。那我们就在内存中查找“frmBZZHTJ”这个字符,果然找到,然后向上查找“MZ”标记(为什么这样,呵,想知道的人找找相关资料),果然找到。备份->另存数据为对应名称的DLL.
7.使用Reflector载入DLL: 哇,果然正确,这是一个超大的DLL,有15M之大,看来NETUNPACK可能是存在某种限制,不能UNPACK这么大的DLL.
8.在上的DLL中查找:”过期“字符串,顺处找到目标,所有有关限制均调用同一函数,呵。只有使用ReflectIL插件重写该函数就可以。
9.可惜没学好MSIL,看了一下不好改,时间急没法立即学习。但难不倒我,用C#写一个我想要的同样函数(呵,其实就是总是返回TRUE),编译后使用同样的工具查看其IL,依次复制过来就搞定啦
10.使用RelectIL另存为新的DLL,复制到目标程序目标下,OK,一切运行正常。
相关文章推荐
- Android反向工程需要的几个软件
- Struts的几个精细之处 作者:王和全 来 源: 赛迪网 版权所有:UML软件工程组织
- Linux:CentOS安装包+VMware安装包+Linux连接工具(xmanager)+Hadoop安装包+Eclipse Hadoop插件及Eclipse软件+相关工程:
- PowerDesigner 反向工程生成ER图
- 关于游戏软件制作的工艺与工程(2)
- 软件工程概述
- 软件工程个人总结
- PowerDesigner + 反向工程 + 数据字典
- 软件工程项目组Z.XML会议记录 2013/09/14
- 软件工程心得体会(十)
- 软件工程视频学习笔记(二十二、二十三)
- 对android项目反向工程的方法
- 软件工程常见问题和软工控制重要性
- 软件工程视频学习笔记(四十五)
- 软件工程设计方法----总结
- 【软工学习】第七章——软件工程知识总结
- 软件工程之系统顺序图
- 软件工程网络15个人阅读作业1(201521123010徐璐琳)
- 软件工程作业第一次作业-准备
- J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式[申明:来源于网络]