.NET 程序的远程注入与HOOK
本帖最后由 wtujoxk 于 2020-1-9 07:22 编辑.NET 程序的注入论坛大神 @wwh1004 的 fastwin32 这个库非常好!非常好!!非常好!!!重要的事情说三遍
这里有大神的介绍:https://blog.csdn.net/wwh1004/article/details/79190596
但是HOOK却没有说,或者说我没有发现,是我太菜。
于是我 GOOGLE 了很久,.NET 的 HOOK,最后搜索到 DotNetDetour 这个库,也是非常好!非常好!!非常好!!!重要的事情说三遍
介绍地址 github:https://github.com/bigbaldy1128/DotNetDetour
有了这两个库,那么实现 .NET 的注入和HOOK就非常 Easy 了。
下面我用 C# 编写程序实现这个功能
1、目标程序:TargetHookWinForm.exe
2、注入的Dll:InjectionDll.dll
3、注入与HOOK程序:HookDemo.exe
程序未做任何异常处理,旨在用最少的代码实现这个功能,下面请按顺序执行Demo
打开 TargetHookWinForm.exe 点击测试按钮,显示为:未注入+HOOK前:测试显示信息
然后打开 HookDemo.exe 点击注入+HOOK按钮,显示为:注入:成功 返回值:1
然后再 TargetHookWinForm.exe 上再次点击测试按钮,可以看到显示为:注入成功:测试显示信息
这就说明HOOK成功。
至此,程序介绍完成,附测试程序,需要在 .NET 4.5环境下运行
既然是破解论坛,就自己动手弄源码,程序未加任何壳和混淆,自己反编译吧!!!
后记,其实我是想在一个 .NET 程序里修改一个用 Rsa 加密的注册码,并且知道解码后是本机 MAC 地址,这样我就直接HOOK解密函数让它返回 MAC 地址就行了
为什么要用这种方式,因为程序用了强签名,改动程序后无法被调用,解包后强签名回去也不行,才想用这种方法去实现破解,不知道大神们遇到这种情况是怎么弄的???望赐教!!感激不尽!!!
最后也感谢这两个库的作者,非常好!非常好!!非常好!!!
也感谢强签名这个软件的作者,让我又学习到了 .NET 的注入和HOOK
还要感谢论坛的大神 @mcevilrock 给了我一个思路,只要思想不滑坡,办法总比困难多! 我看了一下这个github的hook其实我个人感觉没什么用
1.如果能直接反编译源码基本上就不需要hook了~
2.如果软件会进行混淆我觉得他也会进行加壳吧~如果加壳了的话你根本就看不到命名空间了
拿messagebox举例:C#的messagebox 会调用底层的 message所以你懂我意思吧 情话布墨 发表于 2020-1-9 09:47
我看了一下这个github的hook其实我个人感觉没什么用
1.如果能直接反编译源码基本上就不需要hook了~
2. ...
有些场景需要运行状态下进行一些操作,直接反编译可能不太行 学习一下 非常好,感谢 学习一下。 楼主把源码发出来 给我们学习一下呗 过来学习。 观摩学习 思路可以的, 我以前也这样搞,有个 类库, 运行需要校验 license, 然后直接hook 本地时间, 用了一个网上公开的过期的license 就可以了