2016-07-28 9 views
2

유니버설 Windows 앱은 .appx 파일로되어 있습니다.이 파일은 단순히 파일과 메타 데이터를 압축 한 것입니다. 대부분의 메타 데이터 파일은 Microsoft 웹 사이트에 광범위하게 문서화되어 있으며 파싱 및 재생성이 간단합니다. 그러나 AppxSignature.p7x는 여전히 수수께끼로 남아 있습니다. 이 enter image description hereAppxSignature.p7x의 구조는 무엇입니까?

AppxSignature.p7x가 AppxBlockMap.xml, 내용 & 디렉토리 해시의 해시를해야하고, 서명 :이 그림 (source)에서

. 그러나 AppxSignature.p7x 파일 자체의 설명서를 찾을 수 없습니다. 이상적으로이 서명을 생성하고 확인하기 위해 대체 도구를 사용하고 싶습니다. openssl/gnutls 또는 유사합니다. 이에 대한 실용적인 사용은 Linux에서 응용 프로그램을 업데이트하고 다시 패키지하고 Windows 저장소에 대한 .appxupload 파일을 준비하는 것입니다.

+0

signtool이 APPX 파일과 정확히 어떻게 작동하는지는 문서화되어 있지 않습니다 (PE 형식 파일에 대해서만 설명되어 있습니다 : http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/). authenticode_pe.docx), Windows에서 SignerSign API를 사용해야하기 때문에 (signtool이 그 역할을합니다). 그러나 여기에 "fb-util-for-appx"라고하는 원하는 것을 할 수있는 오픈 소스 도구가 있습니다 : https://github.com/facebook/fb-util-for-appx –

+0

@SimonMourier 이것은 신의 물건입니다! 이것은 마치 내가 다시 구현 한 것과 같습니다! 이 대답을 제출하면, 그 모든 소스 코드가 모든 속임수를 문서화 할뿐만 아니라 Linux에서 appx 패키지를 생성 할 준비가 된 도구이기 때문에 현상금을 수여 할 것입니다 (심지어 Mac도 마찬가지입니다). 윈도우가 아닌 곳에서 appx를 만드는 것은 내가 궁극적으로 무엇을했는지입니다. – Dima

답변

1

당신은 AppxB에 링크 lockMap.xml 파일은 패키지의 모든 파일에 대한 암호화 블록 해시를 저장합니다. 이 파일은 인증 코드를 사용하여 패키지에 서명 할 때 디지털 서명으로 확인되고 보호됩니다. 패키지 (.ZIP 형식)과 동시에의 BLOCKMAP 파일 을 생성

  • MakeAppx.exe :

    그래서, 창문에, 당신은 두 가지 도구가 있습니다. 블록 맵에있는 내용이 .zip 파일 비트에 가깝기 때문에 중요합니다.이 단계에 대한 압축 도구 만이 될 수는 없으므로 일부 ZIP API를 사용하여 zip/app 패키지 생성을 프로그래밍해야합니다.

  • SignTool.exe "표준"인증 코드를 사용하여 패키지에 서명을 추가합니다. 당신이 Packaging API를 사용 MakeAppx과 같은 작업을 수행 할 수 있습니다 당신은 The SignerSign function를 사용 SignTool에서 같은 작업을 수행 할 수 있습니다 윈도우 API와

.

전체 MakeAppx 프로세스는 IMHO로 문서화되어 있지 않지만 블록 맵 스키마는 사실 여기에 설명되어 있습니다. 비교적 이해하기 쉬운 Package block map schema reference입니다. Windows Authenticode Portable Executable Signature Format

을하지만 PE 만의 (.DLL, .EXE, 등) 파일 (이 .cab 파일을 서명 할 수도 있습니다), 그리고 돈 :

PE 문서의 Authenticode 서명 여기에 설명되어 있습니다 SignerSign이 AppxSignature.p7x를 어떻게 구축하는지 생각해보십시오. 그러나 여기에는 오픈 소스 툴인 https://github.com/facebook/fb-util-for-appx이 있습니다. 서명을위한 입력으로 사용해야하는 것을 선언하는이 파일 https://github.com/facebook/fb-util-for-appx/blob/master/PrivateHeaders/APPX/Sign.h을 보게 될 것입니다. 나는 그들이 그 정보를 어디에서 가지고 있는지 전혀 모른다.

0

이 파일은 PKCS # 12 (.pfx) 파일이므로 암호화하고 서명해야합니다. PKCS (12)에 대해, MakeCert 생성하는 .pvk와 한 .cer 파일을 변환 할 수 How to create an app package signing certificate

사용 Pvk2Pfx 유틸리티를 참조 Wiki

WDK에서 Pvk2Pfx.exe 도구를 사용 .PFX을 만들 수있는 올바른 방법을 참조 당신이 SignTool에서 사용할 수있는 .pfx 파일이 에게 응용 프로그램 패키지에 서명하려면 다음 블로그 게시물에서 설명한 바와 같이

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword] 
+0

서명 인증서 (.pfx)가 이미 있는데 해시 된 데이터와 저장 방법, SignTool을 사용하지 않고 AppxSignature.p7x를 작성하는 방법을 묻습니다. – Dima