100分请高手来讨论:DLL逆向,修改,流程控制

haungrui 2009-02-23 10:39:34
IA-32代码的逆向对我来说不是难事,难就难在我是.NET生手,对MSIL及其架构十分的外行,问题如下:
需对一个ASP.NET应用系统(说是WEB网站也行)进行改造,但手头仅有.ASPX及编译好的DLL文件。现在需要在原来的执行流程之上再插入自己的过程,比如插入一个响应用户点击登录按钮事件的函数,系统除了执行原系统的DLL登录验证函数以外,还要调用我自己写的函数以完成日志或其他功能,两个响应函数不应该相互影响,调用的先后顺序也不重要。
目前能想到的方案有:
1、用JSP将用户的操作事件分别转发到两个DLL中。
2、用我的DLL先响应WEB事件,之后再调用原系统的DLL。缺点:原系统较大且复杂,而且在页面调入的时候有大量的初始化操作,如何让我的DLL去调用原DLL完成这些初始化是个问题?
3、逆向并修改原DLL文件,令原DLL的某些函数在返回之前调用我写的DLL函数。不知技术上是否可行?
4、WEB过滤器。
请各位高手指点迷经,是否还有什么更好的方案,谢谢!
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haungrui 2009-02-24
  • 打赏
  • 举报
回复
有点感触:
在此之前我几乎没有在.NET平台上开发过东西,对其架构和原理一直都处于一知半解的状态,不主动学习看到了也不故意跳过,对ASP.NET、C#等知识的掌握也几乎为零,但是花了不到一天时间攻克了所有的技术要点。通过这次实践越发坚定了这样一个信念:工具不是决定因素,关键是你的思想。记得有些朋友老是在争论工具更新太快,无法跟上节奏;也有的朋友说,掌握RAD快速开发工具就行了,不必再去辛辛苦苦学习底层的东西。因为工作关系,我对C/C++、ASM、逆向比较熟悉,对系统底层的细节也比较了解,有了这些做基础,再来学习层次较高的RAD开发就会容易许多,因为RAD不可能是空中楼阁,它总需要有实现的基础。如果程序员有比较扎实的基础的话,很容易找到RAD技术细节与底层细节的“映射”关系,往往有种似曾相识、触类旁通的感觉。平台可以有差异、语言语法可以有差异,但编程的思想却是能贯通的,编程说到底就是实现你的想法,工具并不是评判程序优劣的参数之一,就好像并不是好笔都能写出诗歌画出好画的道理一样,如何用好这些工具才是关键的问题。说到RAD工具太多、更新太快这个问题,如果从来只是关注RAD工具本身,拒绝底层的细节,想要跟上更新的速度,或者在RAD工具之间进行切换,需要付出的成本确实很高,但是,恰恰是那些底层的基础可以作为沟通各种RAD开发的桥梁,让你能快速掌握并开始应用。我对真正掌握熟练运用ASP.NET可能有一段不短的路要走,也可能永远也走不到那一天——抽出必须的知识点,能满足实现手头的任务就够了。
说到最后,还是那句话:基础很重要,思想更重要,工具轻飘飘。
haungrui 2009-02-24
  • 打赏
  • 举报
回复
终于搞定所有的技术要点了,自己写的测试程序能很好的跑起来!接下来就可以正式工作啦 :)

实现过程与我在4楼的提问差不多,将原DLL反编译成.il文件,然后修改该.il文件①添加对新DLL的引用说明;②找到需修改的函数,令其调用新DLL中的函数;最后再将此.il文件编译成DLL。
具体细节,在整个项目做完后再整理发布出来。

在此,感谢各位朋友的帮助!
MicroYee 2009-02-24
  • 打赏
  • 举报
回复
将原页面的后台文件改为你的基于Page的类,在这之中调用原dll页面的相关方法,可以一试
haungrui 2009-02-24
  • 打赏
  • 举报
回复
多谢夜雨寒窗兄的指点!是否能理解为:先用ildasm将原DLL反编译成.il文件,然后再对.il进行修改令其调用我自己写DLL,最后将修改好的.il文件用ilasm编译成DLL?
还有请教一下,我自己写的DLL有什么具体的要求,是直接创建一个DLL项目,还是以创建新网站的方式来生成该DLL?
.NET的DLL间的互调用与传统的DLL调用是否一样,能否给一个简单的代码片段!

再次感谢!
wdx2008 2009-02-23
  • 打赏
  • 举报
回复
其实就是在原来的基础上NEW实例化一下,调用你写的类,这个类就是你写的DLL
wdx2008 2009-02-23
  • 打赏
  • 举报
回复
3、逆向并修改原DLL文件,令原DLL的某些函数在返回之前调用我写的DLL函数。不知技术上是否可行?
可行

你可以单独把你的逻辑写成一个DLL,把原来的DLL反编译后加入调用你写的DLL就可以了
每个DLL看看做是一个单独的类,这个C#和JAVA等差不多是一样的
Terry717 2009-02-23
  • 打赏
  • 举报
回复
不懂,帮顶!!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧