这两天研究了一下.net dll的注入,实现了托管cpp的注入源代码,并在Windows10下测试通过。

泡泡龙 2017-07-07 10:19:50
加精
因为项目需要,被迫通过.net注入方式对另一个进程操作数据。

百度了好久,只找到一个好用的.net注入器(Teast写的),核心源码还是十年前的。但是我不需要它那个注入器的界面,所以只能继续找。

功夫不负有心人,通过研究,弄明白了Windows标准注入的原理:
通过加载原生dll,启动DLLMain函数,再调用托管dll,启动自己的函数完成工作。当然,这个也可以通过托管cpp来完成,这样就只需要一个dll了。

最后,参考了若干资料之后,我终于完成了注入和加载托管dll并启动指定函数的工作,源代码不到100行。
支持.net 2.0,4.x,支持32位和64位。在win10下测试通过。

下面的代码完成了注入工作
DWORD StartInject(HANDLE hProcess, LPTHREAD_START_ROUTINE function, wchar_t * data)
{
auto buffLen = (wcslen(data) + 1) * sizeof(wchar_t);
void* remote = ::VirtualAllocEx(hProcess, NULL, buffLen, MEM_COMMIT, PAGE_READWRITE);
if (remote)
{
::WriteProcessMemory(hProcess, remote, data, buffLen, NULL);
auto hThread = ::CreateRemoteThread(hProcess, NULL, 0, function, remote, 0, NULL);
::WaitForSingleObject(hThread, INFINITE);
DWORD exitCode;
::GetExitCodeThread(hThread, &exitCode);
::CloseHandle(hThread);
::VirtualFreeEx(hProcess, remote, 0, MEM_RELEASE);
return exitCode;
}
return 0;
}


完成注入之后,就可以反射调用托管函数。如果需要跨进程发送指令,可以通过ipc之类的手段。
具体实现欢迎QQ 564955427交流。

顺便鄙视一下CsToD,拿着十年前的破代码,Win10 64位下都不能工作,还以为是个宝贝,张嘴就要钱,还看谁都像是骗代码的,又是加壳又是混淆的,自己累个半死,结果收到文件之后直接就被小红伞的给杀掉了,哈哈,丢人。
如果你看到这个帖子,可别诬陷我偷你代码啊,这代码我还没发现国内有谁提供可以在2017下编译通过,并且支持64位的呢。

其实十几年前在国外,注入就早已经是成熟技术了。很多游戏注入器支持四五种注入方式,国内谈及的.net注入都仅仅是实现了最标准的注入而已,并没有什么神秘的地方。
下图是某注入器的实现方式,我劝某人,有能耐搞些不是尽人皆知的东西再加壳吧,免得天天和杀毒软件过不去。


...全文
7966 59 打赏 收藏 转发到动态 举报
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
_小黑_ 2017-08-08
  • 打赏
  • 举报
回复
关注一下
Hobo丶 2017-08-07
  • 打赏
  • 举报
回复
IT修补匠 2017-08-03
  • 打赏
  • 举报
回复
感谢分享 路过学习一下
Passhanshuiyingyue 2017-08-01
  • 打赏
  • 举报
回复
马克一下~~~
It_killer 2017-07-30
  • 打赏
  • 举报
回复
大神,问一下,网站能够通过注册码,序列号来限制部署么
泡泡龙 2017-07-27
  • 打赏
  • 举报
回复
引用 51 楼 nanfei01055 的回复:
这种方式实用价值不大,搞搞破解可能有点用。实际应用中,谁会用这种技术,杀毒软件见一个杀一个。我十年前写杀毒软件时这种模式已经玩烂了,要稳定还是写sys驱动吧。注入的东西稍微复杂些,运行时间长点很容易造成目标进程崩溃和系统蓝屏的。
对普通程序员来说,注入dll在很多场合是唯一的解决办法,例如调试一个没源码的系统。 至于杀毒软件,不用360和腾讯管家之类的流氓软件的话,应该不会报警。 当然,很欢迎你提供sys驱动demo给大家学习
nanfei01055 2017-07-27
  • 打赏
  • 举报
回复
我的回贴为啥不见了
nanfei01055 2017-07-27
  • 打赏
  • 举报
回复
这种方式实用价值不大,搞搞破解可能有点用。实际应用中,谁会用这种技术,杀毒软件见一个杀一个。我十年前写杀毒软件时这种模式已经玩烂了,要稳定还是写sys驱动吧。注入的东西稍微复杂些,运行时间长点很容易造成目标进程崩溃和系统蓝屏的。
riay1Ezg 2017-07-27
  • 打赏
  • 举报
回复
感谢LZ的技术分享
-伊凡- 2017-07-26
  • 打赏
  • 举报
回复
长见识了,谢谢分享
RLib 2017-07-22
  • 打赏
  • 举报
回复
你提供的代码和.net注入关联不大, 通篇和.net相关的也不过用clr的dll去加载.net而已, 所以其实不过是普通dll注入而已, 这个国内早就玩烂了, 你这样说未免有失偏颇。
泡泡龙 2017-07-22
  • 打赏
  • 举报
回复
引用 46 楼 cxzzwb 的回复:
弱弱的问一句,CsToD是谁?CSDN的某位版主吗??
现在QQ改名了,叫SoftCracker,QQ号我就不说了,免得他羞愧自杀赖上我
单线程加锁 2017-07-21
  • 打赏
  • 举报
回复
感谢分享 感谢分享
程序猿老曾 2017-07-21
  • 打赏
  • 举报
回复
弱弱的问一句,CsToD是谁?CSDN的某位版主吗??
weixin_39532615 2017-07-17
  • 打赏
  • 举报
回复
非常6666666
pugongyingpgyidc 2017-07-17
  • 打赏
  • 举报
回复
谢谢楼主分享
sqpgyIDC 2017-07-14
  • 打赏
  • 举报
回复
谢谢分享谢谢分享
sqgame0706 2017-07-14
  • 打赏
  • 举报
回复
感谢楼主分享
大然然 2017-07-13
  • 打赏
  • 举报
回复
我还以为你说的 .net core呢
  • 打赏
  • 举报
回复
看起来很有用 不过这是什么代码呢 是C++么 C#怎么办 知道么
加载更多回复(25)

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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