首页
社区
课程
招聘
[求助]线程起始地址修改
发表于: 2013-7-8 13:29 5344

[求助]线程起始地址修改

2013-7-8 13:29
5344
最近做一个注入的东东,当我注入后启动线程会被被注入程序结束掉,据说是该程序有检测线程起始地址。于是我想改变线程的起始地址,思路就是修改线程的起始地址为一个合法地址,然后在合法地址加入跳转到真实的线程代码段执行,以逃避在线程启动时被注入程序对起始地址的检测。但问题来了,我该怎么去找一个合法的地址呢?我做了如下尝试:
(DWORD)VirtualAlloc(NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);这样申请一个地址,但是该地址依旧被认为非法。于是按照某文章说的找一个API。我就找了user32.dll中的DestroyAcceleratorTable(随便找的)。但我发现直接HOOK这个函数地址处会失败。于是加入修改内存页的读写属性 BOOL br = VirtualProtect((LPVOID)funaddr, 0x10, PAGE_EXECUTE_READWRITE, &oldp);。可是修改属性函数也失败。现在想请教各位大侠,怎么才能动态获取一个合法地址。比如在exe模块的。或者其他明显的合法模块(user32.dll  等)。还有就是为什么我调用VirtualProtect这个会失败,VirtualAlloc这个api的第一个参数(不为NULL)怎么理解。比如我这样调用DWORD addr = (DWORD)VirtualAlloc((LPVOID)0x401000, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);  是什么意思。他是指我想在0x401000地址处申请4096大小的空间,还是说以0x401000为开始,往后查找满足条件的空间呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 137
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
那你还不如直接干掉检测
2013-7-8 14:06
0
雪    币: 451
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
干掉检测应该比这个更难
2013-7-8 14:07
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
用NtProtectVirtualMemory试下,感觉是程序hook自身一些api,用XT查下有没有。
2013-7-8 15:13
0
游客
登录 | 注册 方可回帖
返回
//