逆向fuck.sys--编译通过--源码

本文介绍了作者在逆向工程过程中分析fuck.sys驱动的过程,包括驱动去花、加载DLL资源的方法和插APC加载DLL的实现。作者通过调试和学习,实现了驱动的基本功能,并分享了遇到的问题及解决方案,旨在交流学习经验。
信息来源:邪恶八进制信息安全团队( www.eviloctal.com
文章作者:sudami

前言:
一直很向往进入Debugman论坛的RCT这个核心团队,但自己水平有限,最后没有过关.

呵呵,不过俺从中学到了很多东西,于是发此帖分享一下学习成果;也顺便请教各位大牛,希望您有时间的话,逆一份更加好的code.
偶逆的这份code虽然大致实现了原来驱动的功能,但写的毕竟很粗糙,希望有逆向经验的同学能给予部分提示和指导,偶也能从中总结经验和教训,争取在短时间内提高自己,以便下次再申请加入RCT.


正文:

/*********************************************************************************************************
* AUTHOR : sudami [sudami@163.com]
* TIME : 2008/06/05
*
* Command:
*
* 这份code是完成XIKUG给的题目:“逆向fuck.sys,给出源码,编译成功,替换原驱动的功能”
* code已经基本实现了原驱动的功能,部分瑕疵有:
*
* 1. 驱动卸载时候会BSOD, 和加进来的DLL资源有关. 不加DLL资源,则可正常加载卸载.
* 2. 驱动中包含的DLL未用XOR加密,故释放DLL时不用解密.但解密部分的code保留
* 3. DLL加载后,偶没有调用DeleteFileW来删除这个DLL,保留这个功能; 调用LoadLirary
* 经过长久思考,换回原来的硬编码. 动态获取其地址的code保留.可运行.
*
*
* Description:
*
* ------ 原驱动的功能 ------
* 1. 驱动入口; 解密出“ImagePath”;在注册表得到自身的全路径;读取自身文件;定位到SYS最后一个节的
* 结束处;获取一个DOWRD的DLL文件大小,偏移后开始解密DLL,将获取的数据存放的申请的非分页内存中;
* 写DLL到/SYSTEMROOT/SYSTEM32/winlib .dll.
* [sudami注:这里有个小技巧,为防止同名不可删除文件干扰DLL的释放,作者进行了判断,winlib0.dll ~ winlib10.dll]
*
* 2. 映射kernel32.dll到内存,搜索EAT得到个函数的地址-
* LoadLibraryA 、GetSystemDirectoryW 、lstrcatW 、DeleteFileA
*

逆向工程(又名反向工程,Reverse Engineering-RE)是对产品设计过程的一种描述。 通俗解释: 对于软件项目的逆向工程就如同盖楼一样,一栋大楼摆在面前,在不知道大楼图纸(图纸其实就是程序的架构)的前提下,仿照现有的大楼结构(发布好的项目结构)盖出相同的大楼。 1、在eclipse中建立maven项目(单击链接查看教程) 2、打开建立的该项目所在文件夹:项目右击->Properties 3、找到该文件夹所在位置,并找到src目录 4、还原webapp文件夹(前台页面内容)中的内容:将放在服务器tomcat中的webapps文件夹下的.war文件拷贝出来解压将解压的内容放到原webapp文件夹中 5、还原resources文件夹(配置文件信息)中的内容:依然在解压的.war文件中找:WEB-INF->classes中的内容(除了com该文件,这个文件其实是本项目命名的存放java类的文件;其它项目有可能不同) 6、还原java文件夹(项目中的类包)内容:将5中的com文件夹中的内容直接打开任意一个最下面的子文件,将其拖到我们之前下载好的反编译软件中 7、通过eclipse重新加载该项目,将反编译出来的每一个类按照相应的结构、命名在原项目中建立 8、引入相关的jar包:jar包文件在解压的.war文件中:WEB-INF->lib文件夹下;项目右击->build path->Configure build path->Libraries->Add External JARs.. 选择jar包所在的文件也就是上面的lib文件夹位置 9、更新项目,并在eclipse中添加tomcat(点击链接查看教程) 10、解决项目中的问题,小编遇到的最多的问题是因为继承关系用到了泛型,所以在反编译的时候丢失了List或者set返回值类型,找到错误上面定义的地方,将对应的类型添加到上面就ok了! 11、appserver端代码搭建的时候,用到了hadoop技术,可能编译的时候会出现本地没有hadoop的错误(单击链接查看解决方法) 注:反编译完成之后,在测试功能的时候,发现导出excel中的逻辑有所错误,这方面还没有搞懂是当时人为问题还是反编译过程中的问题,不过最后跟了代码也解决了! 【总结】 以上是小编在研究完成之后属于教程性的东西,将其中小编实践以及思考的部分过程省略了。 活儿干完之后,得到经理和领导的大大赞扬是少不了的,另外吃肉也是少不了的。 但是更多的是,小编在解决这个大问题的时候的思考过程,其中困难部分: 1、研究生成war包之后,对应的文件的结构 2、研究java类的打包形式,对应的jar包的存放位置 3、对于该项目框架的梳理过程 4、整合过程,对于每一步操作细心的要求 5、整合完成,解决编译报错的过程 虽然活儿干完了,项目也跑了起来,但是对于里面的技术点自己还是得深入到代码中去研究,去感受,还有其中业务逻辑的梳理,以及设计思想的升华都需要去了解去学习。 只要相信自己,并付出与行动,终究会取得胜利的桂冠,加油O(∩_∩)O~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值