MASM
코드의 모든 함수를 콜백 함수로 변환하는 API가 필요합니다. 코드에서 API 함수를 사용하는 경우 GetProcAddresses
API를 사용하여 코드에서 콜백 할 수 있지만 API가 아닌 API를 선언하면 API로 콜백 할 수있는 방법이 있습니까?MASM에서 함수를 콜백 함수로 변환하기위한 API
0
A
답변
0
은 DLL에서 내 보낸 함수를 처리하므로 모듈에서 해당 함수를 내 보내서 DLL을 만들어야합니다. 당신이 정확히 무엇을하고 싶은지에 대해서는 약간 불명확합니다. 일반 exe 파일에서 함수를 내보내려는 경우이 작업을 수행 할 수 없습니다.
MASM을 사용하여 DLL을 만드는 방법에 대한 자세한 내용은 this link을 참조하십시오.
0
물론 exe에서 함수를 내보낼 수 있습니다! 몇 가지 방법이 있습니다.
는 link
링크/서브 시스템의
/EXPORT
매개 변수를 사용 : WINDOWS/수출 : Proc_To_Export이
당신이 경우에, 많은 기능을 내보낼 경우가 혼란스러워 할 수 file.obj, DLL과 마찬가지로 def
파일을 만듭니다.
EXPORTS Func1_Name
Func2_Name
Func3_Name
etc...
링크/SUBSYSTEM : WINDOWS/DEF : DEF_name는 또 다른 방법은 당신의 PROC가
export
include masm32rt.inc .code start: AddTwo PROC EXPORT FirstNum:DWORD, SecondNum:DWORD mov eax, FirstNum add eax, SecondNum ret AddTwo ENDP end start
로 반출하도록 MASM을 알리는 것입니다
을 program_name.obj 어셈블하고 연결 한 다음 콘솔 앱으로 다음을 어셈블하고 연결하십시오.
include masm32rt.inc
includelib Add2_Exported.lib
AddTwo PROTO FirstNum:DWORD,SecondNum:DWORD
.code
start:
invoke AddTwo, 200, 3456
print str$(eax), 13, 10
inkey
invoke ExitProcess, 0
end start
이 예제에서는 add2_exported.exe
및 해당 lib 파일을 샘플 콘솔 응용 프로그램과 동일한 디렉토리에 넣습니다.
당신이 볼 수 있듯이, 보낸있는 기능과 기능을 보낸 콘솔 응용 프로그램의 호출의 결과.
당신은 또한 사용할 수 있습니다 LoadLibrary
, GetProcAddress
:
include masm32rt.inc
.data
szAppName db "add2_exported.exe", 0
szFunction db "[email protected]", 0
.code
start:
invoke LoadLibrary, offset szAppName
mov esi, eax
invoke GetProcAddress, eax, 1 ; use ordinal
push 3456
push 200
call eax
print str$(eax), 13, 10
invoke GetProcAddress, esi, offset szFunction ; use function name
push 3456
push 500
call eax
print str$(eax), 13, 10
invoke FreeLibrary, esi
inkey
invoke ExitProcess, 0
end start
관련 문제
- 1. 클래스의 멤버 함수를 콜백 함수로 전달하십시오.
- 2. 콜백 함수와 일반 함수를 다른 콜백 함수로 래핑 하시겠습니까?
- 3. 멤버가 콜백 함수로 사용
- 4. 메소드를 콜백 함수로 Windows API 호출에 전달하는 방법 (후속 조치)?
- 5. javascript jsonp 콜백 함수로 작업하기
- 6. HTML을 변환하기위한 안전한 API (Java)
- 7. C++ 클래스 멤버 함수를 C 콜백 함수로 사용
- 8. C 함수를 루아 함수로 변환
- 9. 기본 콜백 함수로 혼동 됨
- 10. 다른 모듈을 콜백 함수로 호출 [ES6]
- 11. 노드의 콜백 결과를 별도의 함수로 사용하기
- 12. 하나의 함수로 호출자/콜백 배치하기
- 13. GTK 콜백 함수로 배열 제출
- 14. 함수를 matlab 함수로 보내기
- 15. 데이터를 반환하는 콜백 함수로 익명 블록을 설정하는 방법
- 16. msscript.ocx로 실행되는 VBScript 내에서 C# 함수로 콜백
- 17. 키 콜백 함수로 표시되는 opengl 함수
- 18. $ .when을 콜백 함수로 사용하는 방법은 무엇입니까?
- 19. res.json을 콜백 함수로 전달하는 방법은 무엇입니까?
- 20. 콜백 정보를 원래 호출 함수로 되 돌린다
- 21. MASM에서 문자열 연결
- 22. masm에서 절대 점프
- 23. MASM에서 배열 액세스
- 24. 음성/오디오 데이터를 텍스트로 변환하기위한 API
- 25. 다양한 문서 형식의 PDF로 변환하기위한 .NET API
- 26. 크롬 API 작업을 함수로 캡슐화
- 27. 오류 : 함수가 함수를 반환하는 함수로 선언되었습니다.
- 28. Ajax 사용 WCF는 간헐적으로 콜백 함수로 복귀합니다.
- 29. 벡터 함수를 사용하여 벡터로 요소 단위로 변환하기위한 mapply의 사용
- 30. 콜백 함수를 시작한 이벤트
prograqm 예를 들어 여기에 보여 너무 길어, 이메일 당신은 왜 당신이 내 이메일을 제공해야 – user3291634
프로그램 보내라고? 나는 이것을 당신을 위해 쓰지 않을 것입니다. 링크를 읽고 기능을 내보내는 데 필요한 변경 사항을 적용하십시오. – Devolus
아니요, 링크를 읽었지만 목표가 아닙니다! 여러 원시 함수가있는 프로그램이 있는데 DLL로 내보내고 싶지 않고 API를 사용하여 콜백 모드로 변경하려고합니다. 프로그램을 보여주고 싶지만 여기에 표시하기에는 너무 깁니다. ! 프로그램을 우편으로 보내려고 했으므로 우편이 필요합니다! – user3291634