2017-05-23 1 views
0

Xamarin.Forms PCL을 사용하여 Android 앱을 만들었습니다. 이제 출시하기 전에이를 보호하고 싶습니다. 나는 또한 Confluence를 사용하고 있는데, .NET Reactor도 시도해 보았지만 동일한 문제가있었습니다.ConfuserEx로 난독 화가 된 Xamarin.Android App을 어떻게 게시합니까?

내가 겪었던 문제는 obfuscator 자체가 아니라 올바르게 내 AppName.dll 파일에 수행 할 작업을 수행하여 난독 화 된 dll을 $(SolutionDir)AppName\AppName.Droid\bin\Confused\AppName.dll 폴더에 넣는 것입니다. 그러나 VisualStudio 15에서 AdHoc을 통해 내 앱을 게시하려고 할 때 앱이 난독 화되지 않은 dll로 apk를 게시하므로 앱을 독자적으로 리버스 엔지니어링하여 모든 원래 코드를 볼 수 있습니다.

  • 내가 NormalObfuscate.crproj라는 ConfuserEx 파일을 만들어 내 솔루션 폴더에 을 넣어 :

    여기에 내 현재 설정입니다. 빌드 이벤트에서 내 안드로이드 프로젝트의 속성에서

  • , 나는 다음과 같은 빌드 후 이벤트 넣어 :

경우를/I "$ (ConfigurationName)"== "릴리스" "$ ("$ (SolutionName)"== "릴리스"xcopy/Y "$ (SolutionDir) AppName \ AppName (SolutionDir) ConfuserEx \ Code \ Confuser.CLI.exe" "(SolutionDir) NormalObfuscate.crproj"

"$ (SolutionName)"== "$ (SolutionDir) \ AppName \ AppName.Droid \ bin \ Release \ AppName.dll"

"릴리스"xcopy/Y "$ (SolutionDir) AppName \ AppName.Droid \ bin \ Confused \ AppName.dll" "$ (SolutionDir) \ AppName \ AppName.Droid \ obj \ Release \ linksrc \ AppName.dll"

  • 은 내가 프로젝트를 보관하고 배포를 클릭 한 다음 APK에 서명하여 출판 솔루션
  • 재건.

이 모든 후 apk를 언로드 할 수 있었고 obffuscated dll은 내 bin \ Release 폴더에 있어도 거기에 없었습니다. 누구든지 압축 관리자가 응용 프로그램을 압축하고 게시 할 때 난독 화 된 dll을 사용하는 방법을 알고 있습니까?

+1

보관 관리자를 사용하지 마십시오. 'msbuild'를 사용하고' true'를'.csproj'에 추가하십시오. 그렇지 않으면 아카이브 관리자가 정상적인 구성을 실행하고 사용자를 무시합니다. –

+0

내 apk에도 서명 할 예정입니까? – cvanbeek

+0

예'/ t : SignAndroidPackage'와 같아야합니다. –

답변

0

나는 더 둥근 방식으로 작동하도록했다.

먼저 App.Droid 프로젝트 파일에서 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 아래에 <AndroidBuildApplicationPackage>true</AndroidBuildApplicationPackage>을 추가하십시오. 이렇게하면 프로젝트를 다시 작성할 때 서명되지 않은 APK가 생성됩니다.

또한 프로젝트 파일에서 프로젝트에 다음 줄을 추가합니다

<Target Name="Obfuscate" AfterTargets="_CopyIntermediateAssemblies" Condition="'$(Configuration)' == 'Release'"> 
    <Exec Command="ObfuscateRelease.bat" WorkingDirectory="$(SolutionDir)" /> 
</Target> 

이것은 당신이 당신의 주요 솔루션 폴더에 배치해야합니다 ObfuscateRelease.bat라는 빌드 과정에서 박쥐 파일을 실행합니다.

ObfuscateRelease.bat 파일은 다음과 같습니다 :

echo running ObfuscateRelease.bat 
:: Call Confuser ex to obfuscate your project 
START /WAIT "Obfuscating App.dll" "<Path to Confuser>\ConfuserEx\Code\Confuser.CLI.exe" "<Path to Confuser Ex file>\NormalObfuscate.crproj" 
:: copy confused files into the release folders so it is packaged into the app 
echo starting to copy 
copy "<Path to App>\App\App.Droid\bin\Confused\App.dll" "<Path to App>\App\App\App.Droid\bin\Release" 
copy "<Path to App>\App\App.Droid\bin\Confused\App.dll" "<Path to App>\App\App.Droid\obj\Release\linksrc" 
copy "<Path to App>\App\App.Droid\bin\Confused\App.Droid.dll" "<Path to App>\App\App.Droid\bin\Release" 
copy "<Path to App>\App\App.Droid\bin\Confused\App.Droid.dll" "<Path to App>\App\App.Droid\obj\Release\linksrc" 
echo finished copying 
echo finished ObfuscateRelease.bat 

그런 다음 프로젝트를 다시 빌드합니다. 빌드 출력에 에코 라인이 표시되어야합니다. 빌드가 완료되면 서명 된 (디버깅 별칭 사용) 및 서명되지 않은 버전의 앱이 생성됩니다.그런 다음 sign the app manually 수 있습니다. (이 작업을 수행하는 단계를 더 쉽게 수행 할 수 있도록 다른 박쥐 파일을 만들었습니다.)

+0

@Ensunder가이 작업을 수행 했습니까? – cvanbeek

관련 문제