wtujoxk 发表于 2020-1-8 23:07

.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 给了我一个思路,只要思想不滑坡,办法总比困难多!

情话布墨 发表于 2020-1-9 09:47

我看了一下这个github的hook其实我个人感觉没什么用
1.如果能直接反编译源码基本上就不需要hook了~
2.如果软件会进行混淆我觉得他也会进行加壳吧~如果加壳了的话你根本就看不到命名空间了
拿messagebox举例:C#的messagebox 会调用底层的 message所以你懂我意思吧

dad9 发表于 2020-1-9 10:55

情话布墨 发表于 2020-1-9 09:47
我看了一下这个github的hook其实我个人感觉没什么用
1.如果能直接反编译源码基本上就不需要hook了~
2. ...

有些场景需要运行状态下进行一些操作,直接反编译可能不太行

simon77 发表于 2020-1-8 23:36

学习一下

ohacn 发表于 2020-1-9 08:41

非常好,感谢

lyliucn 发表于 2020-1-9 10:44

学习一下。

dad9 发表于 2020-1-9 11:17

楼主把源码发出来 给我们学习一下呗

hackgsl 发表于 2020-1-9 11:35

过来学习。

liulanghe 发表于 2020-1-9 11:49

观摩学习

dplxin 发表于 2020-1-9 13:11

思路可以的, 我以前也这样搞,有个 类库, 运行需要校验 license,       然后直接hook 本地时间, 用了一个网上公开的过期的license 就可以了
页: [1] 2 3 4
查看完整版本: .NET 程序的远程注入与HOOK