2011-04-28 2 views
1

저는 DLL을 작성하고 있으며, 편집 후, 포함 된 리소스로 일부 문자열을 추가하고 싶습니다.문자열을 리소스로 포함하십시오.

hRes = win32api.BeginUpdateResource(myFile, 0) 
win32api.UpdateResource(hRes, win32con.RT_STRING, 409, buf, 1033) 
win32api.EndUpdateResource(hRes, 0) 

을 그리고, 나는 내 헥스 편집기와 PE의 문자열을 볼 수있는 일을 나타납니다

내가 다음과 유사 파이썬 스크립트를 사용하고, 그렇게합니다.

내 Dll이 LoadString()을 사용하여 해당 문자열을 다시 꺼내려고 할 때 문제가 발생합니다.

호출

은 같은 것입니다 :

LoadString(myDll, 409, someBuf, lenOfBuf); 

그리고 내 프로그램은 LoadString() 호출에서 잘못된 포인터 참조를 해제 할 나타나고있다.

내 문제는 문자열을 추가하는 방법과 관련이 있습니까? 그리고 두 단계를 수행하는 예제 코드로 나를 가리킬 수 있습니까?

편집 : 나는 이것을 위해 Win32 API를 사용하고 싶습니다.

답변

0

어리석은 저, 그냥 원시 문자열을 덤핑하는 대신 STRINGTABLE 구조를 사용해야했습니다.

1

DLL을 가져 와서 저장하려는 데이터를 추가하고 추가 된 데이터의 크기가 바이트 단위로 포함 된 4 바이트 정수 뒤에 수동으로 설정할 수 있습니다.

이제 데이터를 읽으려는 경우 파일의 최신 4 바이트를 읽고 정수로 해석하고 (시계 바이트 순서) 파일 끝에있는 바이트 수를 읽습니다 (파일 크기 바이트 수는 END - N - 4에서 END - 4까지 N입니다.

+0

확실히 작동하지만 여러 가지 이유로 API를 사용하여 작업하는 것을 선호합니다. – mrduclaw

관련 문제