[완료]메모지 변수 주소...ㅠㅠ

soungsoo의 이미지

어제도 질문을 올렸는데 해결이 되지 않아
다시 도움을 구합니다.

.text:004046F8 aStrpublic_0 db 'strPublic',0

위의 디버깅 코드에서 .text세그먼트의 주소를 구하는 방법과
'strPublic'의 오프셋을 구하는 방법....

처음 접한 부분이라 자세히 알려 주시면 감사하겠습니다.

grassman의 이미지

디버거에서 구할 방법은 직접 디버깅 중에 읽어보시면 되고요. (...)

실제 코드 수행중에는 다음과 같이 확인할 수 있습니다.

1. Code Selector의 값 (AX에 Code Selector가 들어감):
xor eax, eax
mov ax, cs

2. Offset:
lea eax, aStrpublic_0

Flat memory model이므로 CS는 Code Segment가 아닌 Code Selector로 정의하며
Selector에 대한 Descriptor Table을 참조해야 실제 물리 메모리 영역에 대한
매핑을 알 수 있습니다.

soungsoo의 이미지

또 한가지 배웠습니다...그런데 제가 질문을 제대로 못한것 같습니다.
제가 구하고자 하는 답변을 정확히 다시 올리면...

1. 먼저 테스트용 프로그램을 비베로 만들어 임의 변수의 주소를 표시,
확인을 해 보니 제 컴에서는 그 변수의 실제주소값이 "0x15f1d0"이고,
이주소의 물리주소라고 하나요(?) 디버거 화면에서 "0x404700"으로 나왔는데,
"0x404700"이라는 이주소 값이 실행시 어떤 계산으로 실제의 "0x15f1d0"주소가
되는지 입니다.

2. 제대로 이해 못한점 죄송합니다.
혼자서 몇일을 해 봐도 도저히 저값이 나오지 않습니다.
번거러우시더라도 자세한 설명 한번 더 부타드림니다.

grassman의 이미지

Visual Basic으로 만들어진 실행 파일은 P-Code라고 하는 중간 단계의 기계어 코드를
사용합니다. 따라서 Visual Basic 내에서 사용하는 주소 값이 실제 주소 영역과 매칭
되는 것을 보장하지 않습니다. Visual Basic으로는 원하는 결과를 얻으실 수 없을 듯
합니다.

0x15f1d0는 아마 Visual Basic Runtime Interpreter가 사용하는 주소영역에서의 옵셋
일 듯 합니다. 이 값은 CPU에서 바라보는 물리주소나 논리주소와는 아무 관계가 없습
니다.

swirlpotato의 이미지

ia32 기준으로 햇을때

gdt나 ldt에 있는 descriptor를 통해서 거기에 있는 offset 값과 인덱스, 포인터 등등의 레지스터의 값을 더한후에 이것을 page를 통해서 다시 실제적인 물리주소를 구합니다.

intel 메뉴얼에 잘 나와있습니다. 시스템프로그래밍 어쩌구 저쩌구 1, 2권 이렇게 2권 나뉘어져있는데 1권만 보셔도 상관없고요

댓글 달기

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