커널 심볼테이블 질문

declspec의 이미지

커널 심볼테이블에 대해서 공부하면서 아래와같은 실험을 해봤습니다(우분투 10.04에서)

먼저 kmalloc 을 char* 타입으로 캐스팅해서
그 주소를 찍고, 거기서부터 200바이트를 덤프를 떠봤습니다.(kmalloc 의 바이너리코드를 확인해보려고)
그리고 kallsyms 에서 kmalloc 을 grep 해봤습니다.

그랬더니 모듈상에서 찍힌 kmalloc 의 가상주소가
심볼테이블상에 없습니다

1. 왜 실제로 kmalloc 함수포인터의 주소를 찍은값이 커널심볼테이블상에 없을까요? 제가뭔가 착각하는걸까요?

2. kmalloc 의 덤프를 olly 로 분석해봤더니
시작하자마자 스택프레임잡고 어떤 다른 주소를 CALL 하는거같더군요(E8 A3 58 69 DE 이부분 -> CALL 0xde...)
(올리가 해석못한 명령도 있긴했는데) 저 call 되는 주소를 다시 덤프찍어보고싶은데
상대 offset 이 사용될것이므로 쉽게 따라가기가 어렵더군요...
혹시 kmalloc 과정이 수행되는 전체 어셈블리를 얻기 쉬운 방법 없을까요??

[ 4916.313882] module loaded
[ 4922.251146] kmalloc : e1b6a0f0
[ 4922.251152] 55 89 E5 0F 1F 44 00 00 E8 A3 58 69 DE 5D C3 90 04 00 00 00 14 00 00 00 03 00 00 00 47 4E 55 00 4F 61 76 C3 6C 02 A9 4C 7B 24 0D 6D F0 A6 A8 49 8C 5E 71 ED 6D 6F 64 75 6C 65 20 75 6E 6C 6F 61 64 65 64 0A 20 00 6D 6F 64 75 6C 65 20 6C 6F 61 64 65 64 0A 20 00 6B 6D 61 6C 6C 6F 63 20 3A 20 25 78 0A 00 25 30 32 58 20 00 0A 00 54 68 69 73 20 69 73 20 6D 79 5F 66 75 6E 63 28 29 0A 20 00 74 65 73 74 5F 76 61 6C 20 3D 20 25 64 00 45 6E 64 20 6F 66 20 6D 79 5F 66 75 6E 63 28 29 0A 20 00 00 00 00 B0 A0 B6 E1 A0 A1 B6 E1 7E 7A 05 EA 6D 79 5F 66 75 6E 63 00 07 A0 B6 E1 28 A0 B6 E1 B7 A0 B6 E1 F4 A0 B6 E1
root@declspec-desktop:/home/declspec/module_test# cat /proc/kallsyms | grep kmalloc
c01016e0 t trace_kmalloc
c0118a00 t trace_kmalloc
c0119d10 t trace_kmalloc
c0133f10 t trace_kmalloc
c017dd80 t trace_kmalloc
... 생략.

익명 사용자의 이미지

arm-objdump -o kmalloc_related.o 하면 어셈블리를 볼 수 있습니다.

Stand Alone Complex의 이미지

1. (kprobe_opcode_t *) 캐스팅한 뒤에 확인해보시기 바랍니다.
2. kmalloc 함수에 브레이크 포인트를 걸어서 디버깅 해보시기 바랍니다.

RET ;My life :P

댓글 달기

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