Red Hat 8.0(Psyche) 모듈 프로그래밍에서 sys_call_table 사용?

maneul의 이미지

Red Hat 8.0에서 모듈 프로그래밍을 하고 있습니다.

커널 버전은 2.4.18-14인 거 같습니다.

system call wrapping을 하려고 하는데요,

책에 나오는

#include <sys/syscall.h>

을 넣으면 없는 파일이라고 하면서 컴파일이 안됩니다.

그래서 대신

#include <linux/syscall.h>

을 넣어서 사용하니까 컴파일이 되길래 성공한 줄 알았는데요,

insmod를 하니까

unresolved symbol sys_call_table

메시지가 뜹니다.

뭐가 잘못된 거인지를 잘 모르겠습니다.

아시는 분들 제발 가르쳐주시길 바랍니다.

new5244의 이미지

redhat 8.0 이후 배포본에서는 커널에 sys_call_table 이 EXPORT 되어 있지 않더군요.. 따라서 커널 모듈에서 sys_call_table 을 사용할 수 없습니다.

이유는 잘 모르겠지만.... 대부분의 커널 백도어 lkm 들이 sys_call_table 을 사용하기 때문에 원천적으로 막을려고 그런것이 아닐까???? 추측......

sys_call_table 을 직접 export 시킨후에 커널을 재컴파일 하거나 (한 줄 만 추가하면 됩니다)... 아니면... 직접 sys_call_table 주소값을 사용하면...
될 것 입니다...

from saibi

charsyam의 이미지

new5244 wrote:
redhat 8.0 이후 배포본에서는 커널에 sys_call_table 이 EXPORT 되어 있지 않더군요.. 따라서 커널 모듈에서 sys_call_table 을 사용할 수 없습니다.

이유는 잘 모르겠지만.... 대부분의 커널 백도어 lkm 들이 sys_call_table 을 사용하기 때문에 원천적으로 막을려고 그런것이 아닐까???? 추측......

sys_call_table 을 직접 export 시킨후에 커널을 재컴파일 하거나 (한 줄 만 추가하면 됩니다)... 아니면... 직접 sys_call_table 주소값을 사용하면...
될 것 입니다...

new5244님 말씀대로입니다. 저 같은 경우는 SYMBOL table을 읽어서 sys_call_table 주소를 모듈을 올릴 때 자동적으로 올라가게 해서 처리했습니다. 잘 되더군요. 고운 하루되세요.

=========================
CharSyam ^^ --- 고운 하루
=========================

girneter의 이미지

저...
sys_call_table 을 직접 export 시킨후에 커널을 재컴파일
한다는건 알겠는데요,

SYMBOL table을 읽어서 sys_call_table 주소를 모듈을 올릴 때 자동적으로 올라가게 한다는건
어떻게 하는거지요?
좀 설명해 주시면 안될까요?

개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?

charsyam의 이미지

girneter wrote:
저...
sys_call_table 을 직접 export 시킨후에 커널을 재컴파일
한다는건 알겠는데요,

SYMBOL table을 읽어서 sys_call_table 주소를 모듈을 올릴 때 자동적으로 올라가게 한다는건
어떻게 하는거지요?
좀 설명해 주시면 안될까요?

cat /proc/ksym 이던가 하면 sys_call_table 의 주소가 있습니다.
이걸 모듈 Load 시에 파라매터로 넘겨주고 그 모듈에서는 이걸 사용하는
것입니다. 그럼 고운 하루되시길...

=========================
CharSyam ^^ --- 고운 하루
=========================

new5244의 이미지

objdump -t vmlinux 혹은 cat System.map 으로 알아낼 수 있습니다.

from saibi

댓글 달기

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