ios관련해 고수님들께 질문드립니다.

ozon1000의 이미지

보통 Mac에서 XCode tool을 이요하여 두가지 언어(Objective-c && Swift)를 사용하여 어플을 개발하는데요.

개발 완료된 어플은 .ipa 파일로 생성이 되어서 구동되죠.

아주 기초적인 질문일수도 있는데, Objective-c와 Swift를 사용한 아이폰어플의 구조는 서로 동일한가요??

그나저나... 아이폰어플을 리버싱하는 방법은 전혀없나봐요.......

익명 사용자의 이미지

Objective-C와 Swift 모두 LLVM frontend에서 컴파일되어 같은 중간 코드로 변환된다는군요. 덕분에 한 프로젝트에서 섞어 쓸 수도 있는 거고요. 그렇다면 최종 바이나리 구조에 차이가 있을 턱이 없죠.

리버싱에 대해서라면, 암호화되어 있거나, 난독화(obfuscated)되어 있거나, 하다못해 그냥 단순히 문서화가 안 되어 있거나 하는 이유로 다소 어려워질 수야 있겠지만, 어쨌든 컴퓨터가 이해할 수 있는 바이나리는 사람도 이해할 수 있습니다.

네, 물론 이론적인 측면에서 가능하다는 얘기고요. 실질적으로는 리버싱을 하려는 사람이 쏟을 수 있는 시간과 노력에 뚜렷한 한계가 있기 마련이죠.
가장 큰 관건은 리버싱 대상을 이해하기 위한 제반지식을 얼마나 가지고 있느냐입니다. 윈도우즈 어플리케이션 개발 경험을 통해 어플리케이션의 구조와 동작 메커니즘을 숙지하고 있지 않다면, 윈도우즈 어플리케이션을 리버싱하기는 정말 어렵겠죠. iOS 역시 마찬가집니다.

그런데 질문 내용을 보건대 질문자님이 충분한 지식과 경험을 갖추고 계시리라고 생각되지 않는군요. 그렇다면 지금 리버싱을 하시겠다고 덤비는 건 계란으로 바위치는 격이나 다를 바 없습니다. 일단 iOS를 공부하시면서 개발경험부터 쌓으시길 권하고 싶네요. 이건 저번에 질문하신 안드로이드 리버싱에 대해서도 마찬가집니다. (제가 아는 한, 안드로이드 리버싱이 좀 더 쉽기는 할 겁니다만. 저는 iOS 리버싱은 해 본 적 없지만 안드로이드 리버싱은 해봤습니다.)

대체로 리버싱과 같은 소위 "해킹"류 기술들은 상당한 노력을 통해서야 습득할 수 있는 것들이 많은데, 그 과실에만 혹해서 어떻게든 단기간에 배워보려 하는 사람들이 너무 많습니다. 덕분에 이런 커뮤니티에서 그런 주제로 질문하는 사람들에 대한 시각이 다소 부정적인 편이에요. 질문자님에게까지 그런 선입견을 씌우지는 않겠습니다만, 이 분야를 공부하시려면 커뮤니티에서 구체적인 답변이 들어오길 바라기보다는 직접 검색하고 자료를 찾아보며 답을 알아내는 연습을 하시길 추천해 드립니다. 저 대학 때 해킹 동아리에서 선배들도 그렇게 가르치시더군요. "자꾸 선배한테 물어봐서 답만 날로 먹으려 하지 말고 직접 알아보라"고...

ozon1000의 이미지

아 저는 전공이 안드로이드나 iso개발 혹은 리버싱에 관련되어 있지 않습니다.

우연한 기회(?)로 전체적인 흐름만 잡아보자는 의미에서 검색했고 이해가 되지 않는 부분이 있어서

질문글을 남기게 되었네요. 하지만 binary code(native code)의 리버싱이라는 것이 굉장히 흥미있는

분야인것은 분명해 보입니다. 언젠간 정말 기회가 닿으면 뛰어들고 싶은 분야임에 틀림없네요.

해킹 == 보안 == 수학!

수학부터 공부해야겠네요! 앗.. 영어가 먼저일라나요? ㅎㅎㅎ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.