[완료] 실행중인 프로세스의 실행파일을 수정/삭제 하는 것이 가능한가요?

bearchit의 이미지

안녕하세요
질문 중 Windows 환경에서의 내용도 포함되어 있어서 이곳에 질문을 올려도 되나
망설이다가 적당한 답변이나 자료를 찾기가 어려워 잠시 염치를 접어두고 질문 올립니다 ^^;;

제가 궁금한 것은 실행중인 프로세스의 실행파일을 변경해야 할 경우에 대한 것입니다.
자동 업데이트 프로그램을 예로 들면, 실행되지 않은 프로세스의 실행파일들은 변경이
가능하겠지만 현재 실행중인(업데이트 프로그램) 프로세스의 실행파일을 변경하거나 삭제하려면
어떤 방법을 써야할까요?

직접 간단하게 테스트 해보니 리눅스의 경우는 프로세스가 실행중이더라도 해당 실행파일을 삭제하는 것이 가능했습니다.

그런데 Windows에서는 프로세스가 실행중일 경우는 해당 실행파일을 삭제하려고 하면 접근 오류가 발생합니다.

이런 문제를 가능하게 하는 방법에는 어떤 것이 있을까요?

jachin의 이미지

리눅스 프로세스야, 실행한 파일과 상관없이 동작하니 문제가 없지만,

윈도우즈 파일 같은 경우는 프로세스와 관련된 파일은 죽이지 못하니까요...

덕분에 바이러스 프로그램들이 그런 점을 이용해서 프로세스나 서비스에 파일을 점유해놓고

열심히 감시/등록을 반복하고 있죠...

대부분의 윈도우즈 업데이트는 프로세스가 시작되기 전인 데스크탑 환경 로딩시나, 종료시에 수행되는 편입니다.

저도 자세한 내용은 잘 모르니... msdn에 물어봐주세요.
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

chadr의 이미지

windows같은 경우에는 삭제는 안되지만 이름변경이 가능합니다.

a.exe를 패치하고자 하신다면..

a.exe -> a.ex_ 등으로 적당히 이름변경..
패치된 a.exe를 원래 디렉토리에 복사..
실행중인 프로세스 종료..
다음에 프로세스가 실행시 a.ex_ 파일 삭제..

이렇게 하시면 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

세이군의 이미지

보통 이런 식으로 많이 하고 있습니다.

1. 변경 대상 프로그램이 업데이트 프로그램 호출
2. 업데이트 프로그램이 #HOME#/update에 변경대상프로그램의 새 프로그램 저장 (#HOME#는 변경대상프로그램이 있는 위치)
3. 업데이트 프로그램이 변경대상 프로그램 종료
4. 새 프로그램을 설치
5. 업데이트 프로그램이 새 프로그램 실행.

일부 프로그램은 4번 과정에서 압축 해제를 하는 경우도 있지요. 윈도에서는 파일 삭제시에 Lock이 걸리기 때문에 위와 같은 방법을 많이 사용합니다.

한 걸음 더 가까이

emile의 이미지

안녕하세요...궁금한게 있습니다.
전 windows/system32/...안에 win32k.sys와 user32.dll 파일을 수정한 파일로 변경하려 하는데, 실행중인 파일이라 이름을 바꿔도 안되고, 어떻게 해서 바꿀수 있는지 모르겠습니다.

내용보시면 연락주시기 바랍니다.

세이군의 이미지

\windows\system32\win32k.sys와 user32.dll 파일을 수정하시려면 wininit.ini 파일을 이용하고 수정후 재부팅하도록 설정해야 합니다.
이것은 원래 알려주신 내용보다 어려운 내용이고 저도 잘 모르는 내용이라 답변을 드리기 어렵네요.

bearchit의 이미지

답변해주신 모든 분들 정말 감사합니다 ^^

댓글 달기

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