컴파일된 바이너리가 참조하는 외부 함수를 수정할 수 있나요? (코드없이)

jaewonm의 이미지


bitblaze의 TEMU에 tracecap.so 란 플러그인이 있습니다
TEMU가 실행되면서 tracecap.so 를 런타임에 로드해서 taint analysis를 하는데요

TEMU가 다른 소스는 공개되어있는데 tracecap은 컴파일된 바이너리 형태로만 제공하더라구요
tracecap 파일에서 호출하는 외부 함수 (여기서는 TEMU 메인 모듈의 함수) 대신에 제가 만든 함수를
호출하게 하고 싶습니다.

(예)

(원래) tracecap.so --> taintcheck() 호출
(수정 후) tracecap.so --> taintcheck_modified() 호출

문제는 소스가 공개되어있다면 코드를 수정하면되지만 바이너리만 있다는 것이죠..

위의 예의 경우

taintcheck()
{
taintcheck_modified();
}

이렇게 하면 되겠지만 이 방식은 제외하고싶습니다.

그래서 제가 생각해본 다른 방법들은

1. ELF 파일을 파싱해서 함수 import table 부분을 manually 수정
(ELF 포맷 에디터 같은게 있어서 그 부분만 딱 바꿀수 있으면 좋겠는데 아직 그런프로그램있는지 모르겠습니다)

2. 함수 후킹?
(만약 가능하더라도 어느 부분을 후킹해야하는지 모르겠네요;;;)

3. 디컴파일 후 다시 컴파일?
(IDA 디컴파일러에서 함수단위로 말고 아예 바이너리 전체를 디컴파일해서 코드파일 하나를 output으로 내는
기능이 있나요 혹시?)

혹시 다른 의견이나 조언들 있다면 부탁드립니다... ㅠㅠ

danskesb의 이미지

2)에 해당하는 방법은 LD_PRELOAD로 찾아 보세요.

jaewonm의 이미지

네 그 부분을 찾아봐야겠네요 감사합니다!

익명 사용자의 이미지

헥스에디터로 함수 이름 부분을 길이가 같은 다른 이름으로 바꿔치기 하거나 길이가 작은 다른 이름으로 바꾸고 원래 길이가 되도록 null 바이트로 채워주면 정상적으로 작동하네요 ~ ㅋ

댓글 달기

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