[완료]디스어셈블러

koreahjg의 이미지

안녕하세요 요즘 크랙쪽에 관심이있어서 올리디버거를 사용해 보려고 하는데요
문득 올리디버거 같은 프로그램은 어떻게만드는건지 궁금해졌습니다. 보통프로그래밍으로는 못만들거같은생각이^^ 초보라서
도대체 어떻게하는거죠??

태훈의 이미지

예전에 간단한 디버거를 제작해 본적이 있습니다. 윈도우에서는 Win32 Debug API 라는게 있어서 해당 API를 사용해서 기본적인 디버거는 구현할수 있습니다. 그때 구현했던 기능들이 Break Point, Step Into, Step Over, Step Out, 역어셈, Module 정보보기, PE 정보 보기 정도 였던것 같습니다. 메모리, 모듈, 로그정보등은 해당 API를 사용해서 구현하면 되고, Break Point는 해당 주소에 0xCC 삽입하면 됩니다. 물론 기존의 Opcode는 따로 저장해 두어야 복원이 가능하겠죠? Step Into는 CPU에서 플래그 레지스터의 관련 비트를 셋해주면 되는것으로 기억이 나네요. 역어셈 기능은 일단 역어셈 방법을 익힌뒤에 PE분석을 통해 얻어진 프로그램의 엔트리 포인트에서 부터 code 영역만큼 역어셈을 해주면 됩니다.

그때 참고했던 자료가 < DEBUGGING APPLICATIONS For Microsoft .NET And Microsoft WINDOWS >에서 디버거 제작관련 파트에서 기본적인 디버거 제작을 익혔고, 역어셈 관련자료는 어셈러브나 Window 구조 관련 서적에 나와있으니 그걸로 개념을 잡은뒤 < Intel® 64 and IA-32 Architectures Software Developer’s Manual > 2권 부록에던가 Opcode 테이블이 있으니 그걸보고 역어셈 기능을 구현 하시면 됩니다. PE 분석관련 자료는 찾아보면 많이 있을겁니다. 나머지 부가적인 기능을 좀더 추가 하실려면 관련된 자료를 더 찾아보셔야 겠죠.

저는 디버거를 만들어 보았지만 크랙쪽에 해본적이 없어서 디버거를 구현해보는것이 크랙 스킬을 늘리는데 도움이 되는지는 잘 모르겠군요.

Just do it!

koreahjg의 이미지

크랙쪽에 도움이 되는지는 저도 모르겠습니다 ^^;
그냥 올리디버거 사용하다가 문득 생각난건데 정말 자세히 설명해주셨네요 감사합니다~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.