c++实现DLL注入的几种方式

  经过几天的折腾,找到了几个dll注入的方法,但是不意外的是,都暂时没法注入到LOL中,毕竟有进程保护在那,OpenProcess这一步就直接被拒绝了,提升Debug权限也没用,下面记录一些代码,希望能够得到大牛指导,一个人学习有点蒙。目前实测了CreateRemoteThread,QueueUserApc,和ReflectInject三种注入方式,具体可以参考https://zhuanlan.zhihu.com/p/28537697,文章中给了N种注入方式,以及github地址:https://github.com/fdiskyou/injectAllTheThings,应该都没法直接注入到League .exe中,且不说之后的tp检测,其中第三种反射注入最为隐蔽,利用dll自己load自己到入口处,而且可以多次注入,已经在其他程序比如sublime_text.exe,mspaint.exe(win10自带画图)等上测试成功,前两种无法多次注入,估计是main只被加载了一次的原因。

  另外说一下开发中遇到的一些问题:

  注意32位和64位,LoadLibraryA和LoadLibraryW分别为char和w_char类型,这点在注入dll路径的时候需要注意,我在这里白白浪费了一天。另外一般使用32位注入32位,64注入64位。

  另外注意EnableDebugPriv()即开启Debug权限函数,虽然我用了也没什么卵用,QQ.exe注入即崩溃,League of legend.exe还是拒绝访问,getLastError()=5,网上查了,TP是ring0级别的,太鸡贼了,如有大神会做外挂希望赐教啊,撸了一周代码,想搞个脚本自己刷刷,屁产出都没有,神魔恋!!!!

   dll(反射注入的dll去github,见源码,那个相对复杂点,需要在dll中导出load自身的函数ReflectiveLoader):

extern "C" BOOL APIENTRY DllMain(HMODULE /* hModule */, DWORD ul_reason_for_call, LPVOID /* lpReserved */)
{
	using namespace std;
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		cout << "load from dll main" << endl;
		//ShowImage2();
		MessageBox(NULL, TEXT("dll proc attached"), NULL, MB_ICONINFORMATION | MB_YESNO);
		break;
	case DLL_THREAD_ATTACH:
		//MessageBox(NULL, TEXT("dll thread attached"), NULL, MB_ICONINFORMATION | MB_YESNO);
		break;
	case DLL_THREAD_DETACH:
		//MessageBox(NULL, TEXT("dll thread detached"), NULL, MB_ICONINFORMATION | MB_YESNO);
		break;
	case DLL_PROCESS_DETACH:
		MessageBox(NULL, TEXT("dll proc detached"), NULL, MB_ICONINFORMATION | MB_YESNO);
		break;
	}
	return TRUE;
}

  希望能够有人一起学习,大公司的产品防护真的严密,既然这条路暂时行进困难,目前在考虑利用图像识别opencv库来搞一搞,如果能够成功,可以说是100%防封,但是功能相对没那么强大。

  mail:496812133@qq.com,希望能够有人一起学习

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值