2017-03-16 8 views
0

저는 Android를 처음 접하기 때문에 소프트웨어 엔지니어링에 대해 많이 모른다. 나는 앱을 디 컴파일하는 것을 더 어렵게하기 위해해야 ​​할 일들에 대해 알고 싶다. 나는 그것에 대해 약간의 연구를했고 나는이 디버거 JEB를 만났다. JEB는 애플 리케이션을 실행하는 동안 어떤 것들을 모니터 할 수있는 것처럼 보인다. 그러나 나는 JEB에 의해 감시되고있는 안드로이드 애플 리케이션의 중요한 포인트를 얻지 못하기 때문에 그것을 사용하는 이점을 모른다. 예 :리버스 엔지니어링 및 디 컴파일 (android app-jdk)에 대한 정보가 필요합니다.

enter image description here

는 appearantly 오른쪽 지역 변수를 나타낸다. x/xh는 int에 대해 무엇을 의미합니까? 또는 문자열 값 "secretKey"에 대해 심각하게 문자열 값입니까? 그렇다면 내 코드의 모든 변수가 위험에 처해 있습니다. 아마 시도 중 하나는 코드에서 가짜 변수를 많이 만들어서 실제 변수를 쉽게 볼 수 없게 될 것이라고 생각합니다. 그것은 의미가 있습니까? 그리고이 JEB에 대해 예를 들어 방지하려고 노력해야하는 다른 누수가 있습니까? 수호자가이 일과 관련이 있습니까? 내가 말했듯이 나는 soft-eng에 대해별로 관심이 없다. 그리고 나는 프로 가드가 실제로하는 것을 이해하지 못했다.

내가 본 또 다른 사항은 https://ibotpeaches.github.io/Apktool입니다. 그런 도구를 다루기 위해 더 많이 섞어 버리는 방법?

마지막 질문은 자바 코드이며 아직 생각하지 않습니다. 네이티브 코딩을 시작할 수있는 기회가 있지만 미래를위한 것입니다. 사람들이 본질적으로 코드를 작성하는 것이 안전하다는 것을 알았습니다. 그것 자체로인가? 또는 더 많은 안전을 지키는 도서관이 더 있습니까? 또는 그것 때문에 최종 APK 구조?

일부 단어가 바보처럼 보이면 죄송합니다. 미리 감사드립니다.

답변

0

리버스 엔지니어링을 방지하려고하면 안됩니다. 대신 리버스 엔지니어링의 효과를 최소화하도록 앱을 설계해야합니다 (예 : 앱에 키 또는 비밀번호와 같은 비밀 데이터 포함 안함).

사람들이 앱을 리버스 엔지니어링하는 데 드는 노력의 양은 얼마나 중요하고 대중적인지에 따라 달라 지지만 난독 화는 앱을 리버스 엔지니어링하는 데 필요한 노력을 늘립니다. 그러나 앱이 대중화되면 난독 화로 인해 사람들이 막을 수 없으며, 어둠 속에서 시들 해지면 소스 코드를 Github에 게시하더라도 아무도 귀찮게 보지 않습니다. 또한 드물 긴하지만 난독 화를 추가하면 사람들이 도전 과제를 해결할 수 있습니다.

외에도 난독 화로 인해 보안에 대한 잘못된 인식이 생길 위험이 있습니다. 누구나 스스로 깨뜨릴 수없는 시스템을 고안 할 수는 있지만, 리버스 엔지니어링 전문가가 아닌 경우 나와있는 조치는 존재하는 사람을 막을 수 없습니다. 대신 앱의 모든 내용이 공개 정보이며 적절하게 설계되어 있다고 가정하는 것이 가장 좋습니다.

+0

정보를 공유해 주셔서 감사합니다. 예를 들어 Mcrypt가 쓸데없는 것을 사용하면 귀찮을 것입니다. 모두가 그들을보고 Mcrypt를 다시 만들 수있었습니다. 그리고 나는 그것들을 앱 밖에 두지 못하게한다. 응용 프로그램에서 키가 필요하므로 암호화/암호 해독을 위해 앱에서 Mcrypt를 만들어야합니다. – navid

0

당신은 같은 몇 가지 강력한 난독 도구를 사용하여 코드를 보호 할 수 있습니다 : Bg+Anti Decompile/Reverse Java 그것은 보호 옵션이 많이 있습니다

  • 숨기기 문자열 값을 (도움이 당신이 자바 소스에서 민감한 정보를 지킬 때, 예 : "안녕하세요 세계"- 유니 코드 문자> ߤª)
  • 당황
  • 숨기기 패키지 이름
  • 는 디 컴파일러 도구 트랩에 fakecode 추가
  • 리소스 문자열을 확인하십시오 (누군가 APK 리소스를 수정하려고 할 때 유용)
  • ....