首页
社区
课程
招聘
CreateRemoteThread 遇到error 5
发表于: 2014-5-18 23:03 5711

CreateRemoteThread 遇到error 5

2014-5-18 23:03
5711
我自己写了一个程序,点击一个控件,然后界面上的数字加1. 代码如下:
void CRiversemeDlg::OnBtnAdd() 
{
  m_dit++;
  UpdateData(false);
}

我用OD追到地址如下:

00401556   .  83C4 64       ADD ESP,64
00401559   .  C3            RETN
0040155A   >  8BCE          MOV ECX,ESI
0040155C   .  E8 0B030000   CALL <JMP.&MFC42.#2379_?Default@CWnd@@IA>
00401561   .  5E            POP ESI
00401562   .  83C4 64       ADD ESP,64
00401565   .  C3            RETN
00401566      90            NOP
00401567      90            NOP
00401568      90            NOP
00401569      90            NOP
0040156A      90            NOP
0040156B      90            NOP
0040156C      90            NOP
0040156D      90            NOP
0040156E      90            NOP
0040156F      90            NOP
00401570   .  8B81 A4000000 MOV EAX,DWORD PTR DS:[ECX+A4]
00401576   .  C3            RETN
00401577      90            NOP
00401578      90            NOP
00401579      90            NOP
0040157A      90            NOP
0040157B      90            NOP
0040157C      90            NOP
0040157D      90            NOP
0040157E      90            NOP
0040157F      90            NOP
00401580   .  8B91 A0000000 MOV EDX,DWORD PTR DS:[ECX+A0]
00401586   .  6A 00         PUSH 0
00401588   .  42            INC EDX
00401589   .  8991 A0000000 MOV DWORD PTR DS:[ECX+A0],EDX
0040158F   .  E8 EA020000   CALL <JMP.&MFC42.#6334_?UpdateData@CWnd@>
00401594   .  C3            RETN

00401595      90            NOP
00401596      90            NOP
00401597      90            NOP
00401598      90            NOP
00401599      90            NOP
0040159A      90            NOP
0040159B      90            NOP
0040159C      90            NOP
0040159D      90            NOP
0040159E      90            NOP
0040159F      90            NOP
004015A0   .  8B91 A0000000 MOV EDX,DWORD PTR DS:[ECX+A0]
004015A6   .  6A 00         PUSH 0
004015A8   .  4A            DEC EDX

我多复制了一些,我找的地址是标红的地方,00401580,但是我不确定,因为不想是入口,没有
PUSH EBP之类的,但是我看了上下文,应该只有这段代码。

然后我又写了个程序,用如下代码去调用它:

  HWND h;
  h=::FindWindow(NULL,_T("riverse"));
  DWORD pid;
  ::GetWindowThreadProcessId(h,&pid);
  HANDLE hp=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
  DWORD tid;
  ::CreateRemoteThread(hp,NULL,0,(LPTHREAD_START_ROUTINE)0x401580,NULL,0,&tid);


 前面都正常, 但是执行CreateRemoteThread 的时候出错了,error  5. accecc violation.

不知道是什么原因,很简单的程序啊,我用代码注入器去调用这个地址也是一样的错误,还是说我的入口地址没找对,如果是这样,该这么找呢?求大神帮助!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这是权限问题啊。 换管理员权限。 去网上随便找段远程注入提权的代码。
2014-5-18 23:08
0
雪    币: 68
活跃值: (190)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你这是要找地址 还是咋地?
2014-5-18 23:43
0
雪    币: 242
活跃值: (16)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
没有SE_DEBUG权限
2014-5-19 07:13
0
雪    币: 23
活跃值: (1376)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
00401580   .  8B91 A0000000 MOV EDX,DWORD PTR DS:[ECX+A0]

这ECX都没赋值,直接调用肯定会出异常。
2014-5-19 19:52
0
雪    币: 51
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
我知道如果32bit的程序,注入 64bit的进程会遇到这种问题。
2014-5-19 20:13
0
雪    币: 382
活跃值: (828)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
调用类成员是thiscall,ecx应指向类指针。
都是直接双击打开的话,跟权限没关系,不用加提权代码。
2014-5-20 00:53
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
问题我已经解决了,将ECX 赋值就可以跑了,感谢btmanbtman和sealmoon的解答
还有个小问题,每次我结贴的时候都有一堆重复选项,是怎么回事啊,这么明显的BUG管理员不知道么?
2014-5-21 23:05
0
游客
登录 | 注册 方可回帖
返回
//