호출 스레드의 일부 문제 원격 코드 주입

코드 주입을 작성하는 vs2019은 원래이 같은 알몸 기능을 작성 :

. (1) __declspec (누드) 보이드 myput ()
 2  {
 3.      {
 4.          __asm
 5.          {
 6.              PUSHAD
 7.              푸쉬 - . 1      // 미지의 상수 -1에서 
. 8              푸시 2              // ID 
. 9              의 MOV EAX, 0         // X 좌표 
10              푸시 0             / / Y 좌표 
. 11              MOV EBX에, DS는 [ 0x6A9EC0 ]
 12되고              ,이 DS에 MOV EBX [EBX가 + 0x768 ]
 13 인             푸시 EBX
 14              MOV의 EDX, 0x40D120 
15              호 EDX
 16              POPAD
 17              RET
 18          }
 19      }
 20 }

내가 생각하는 때이 함수에 전달 된 매개 변수의 일부와, 베어 기능을 포기해야 할 것

DWORD WINAPI ThreadProc1 (LPVOID lpParameter)
{
	DWORD _id = ((PPARα에) lpParameter) -> ID;
	DWORD _pos_x = ((PPARα에) lpParameter) -> pos_x;
	DWORD _pos_y = ((PPARα에) lpParameter) -> pos_y;
	__asm
	{
		Pusd
		밀어 -1 // 알 수없는 일정 -1
		_id // ID를 밀어
		MOV EAX, x 좌표 _pos_x //
		_pos_y 밀어 // y 좌표
		mov 인 EBX, DS는 : [0x6A9EC0] //이 인라인 어셈블리 규칙 대 필수 플러스 DS입니다
		MOV EBX에, DS : [EBX + 0x768] // 저서.
		푸시 EBX
		mov 인 EDX, 0x40D120
		EDX를 호출
		POPAD
	}
	0을 반환;
}  

이 원격 스레드 콜백 기능을 쓸 수 있지만,이 방법을 쓰기는, 원래의 프로그램은 몇 vs2019에서 문제를 발견, OD는 쓰기 코드에보고 한 후, 원인을 찾을 게시물을 참조, 갈 수 없어, 충돌하고있다 다음의 컴파일러 옵션 :

어쩌면 몇 가지 기능이 꼬리를 생성하는 호출에 참여하기 때문에 기본 보안 검사하고, 도망을 확인하고 대상 프로세스에 주입 한 후이 호출 스택의 균형 등을 확인하는 것입니다,하지만, 어떤 대상 프로세스가 없다 실제 코드는 몇 가지 실수를 호출합니다

또 다른 점은 인라인 어셈블리 시간, mov 인 EAX 대이며, [0xxxxxx]이 어셈블리 코드를 작성해야합니다 mov 인 EAX, DS는 :는 0xXXXX]이 양식은, 컴파일 시간이 mov 인 EAX로 컴파일 될 것이다, 그렇지 않으면 대,이는 0xXXXX 형태, 확실히 우리의 의도.

 

추천

출처www.cnblogs.com/fanwenke/p/10927058.html