코드 주입을 작성하는 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 형태, 확실히 우리의 의도.