혹시 간단한 프로그램을 메모리에 올려놓고 (마치 쉘코드처럼) 그것을 실행할 수 있을까요
대부분은 파일을 만들어놓고 실행하는데, 메모리에 있는 프로그램을 실행시킬려고 하는데 가능할까요?
가장 간단한 방법이라면, 램드라이브를 사용하세요
피할 수 있을때 즐겨라! http://melotopia.net/b
네 감사합니다. 램디스크를 사용하는 것도 좋을 것 같긴한데요.
저는 단순하게 API만을 써서 하고 싶습니다.
혹시 API써서 사용하는 방법 아시는지요
---------------------------------http://blog.naver.com/munhoney ---------------------------------
임베디드 시스템에서는 빠른 실행 속도를 위해 램디스크라는 기법으로 프로그램을 실행 시킵니다. 램을 마치 flash, HDD와 같은 디스크로 보이게 하는 기법입니다. Initrd로 찾아보세요.
해당 머신의 바이트 코드를 만들고,
가상메모리에 복사하되, 그 가상메모리의 실행권한을 주고,
포인터를 얻어서 함수처럼 실행.
이게 될려면 이것저것 잡지식이 많이 필요하겠죠?
리눅스에서 가상메모리 실행권한 주는게 있는지는 나도 잘 모르겠는데.. 윈도우는 virtualalloc 인가? 여튼 이런 비스므리한거에 page execute.. 어쩌고 있는것같던데..
가물하네
Software Interrupt(SWI)를 추가로 만들고, 추가된 Interrupt Number에 해당하는 SWI Vector table에, 실행 코드가 저장된 메모리 위치를 등록해서 인터럽트를 발생시키는 것은 어떨까요?
음 ... 그렇게 되면 커널을 수정해야하는 건가요 지금 생각은 fexecve를 사용하는 방식을 고려하고 있습니다 문제는 메모리에 올라가있는 파일의 디스크립트를 어떻게 사용하느냐는 건데.... 아직그건 모르겠네요
파일디스크립터는 닫기 전까진 다른 데이터를 쓸 수 없을텐데, 그래도 괜찮은가요? ㅇㅁㅇ)? 그렇다면 메모리상의 가상파일시스템으로 해결하는 것이 정답일듯 싶어요. :)
ELF 로더를 만드시면 됩니다.
파일에서 읽어오는 대신 메모리에 로드된 코드를 실행하도록 하시면 될거 같습니다.
libc의 ld.so를 참고하셔도 되지 않을까 싶은데 안뜯어봐서 모르겠네요.
http://stackoverflow.com/questions/1784495/linux-user-space-elf-loader
네 감사합니다.
ELF 로더를 만들게 되면... 메모리에 올려진 것을 그대로 실행 할 수 있을까요? ... 음... 잘 이해가 안되어서요.. @@
무슨 의미인지 잘 모르겠지만... 프로그램 코드가 (자신이 억세스할 수 있는)메모리상에 존재한다면 그냥 콜하면 되지 않나요?
텍스트 포맷에 대한 자세한 정보
<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]
가장 간단한 방법이라면, 램드라이브를 사용하세요
가장 간단한 방법이라면, 램드라이브를 사용하세요
피할 수 있을때 즐겨라! http://melotopia.net/b
네 감사합니다. 램디스크를 사용하는 것도 좋을 것
네 감사합니다. 램디스크를 사용하는 것도 좋을 것 같긴한데요.
저는 단순하게 API만을 써서 하고 싶습니다.
혹시 API써서 사용하는 방법 아시는지요
---------------------------------
http://blog.naver.com/munhoney
---------------------------------
임베디드 시스템에서는 빠른 실행 속도를 위해
임베디드 시스템에서는 빠른 실행 속도를 위해 램디스크라는 기법으로 프로그램을 실행 시킵니다.
램을 마치 flash, HDD와 같은 디스크로 보이게 하는 기법입니다.
Initrd로 찾아보세요.
해당 머신의 바이트 코드를 만들고, 가상메모리에
해당 머신의 바이트 코드를 만들고,
가상메모리에 복사하되, 그 가상메모리의 실행권한을 주고,
포인터를 얻어서 함수처럼 실행.
이게 될려면 이것저것 잡지식이 많이 필요하겠죠?
리눅스에서 가상메모리 실행권한 주는게 있는지는 나도 잘 모르겠는데..
윈도우는 virtualalloc 인가? 여튼 이런 비스므리한거에 page execute.. 어쩌고 있는것같던데..
가물하네
Program Counter 변경!
Software Interrupt(SWI)를 추가로 만들고,
추가된 Interrupt Number에 해당하는 SWI Vector table에,
실행 코드가 저장된 메모리 위치를 등록해서
인터럽트를 발생시키는 것은 어떨까요?
음 ... 그렇게 되면 커널을 수정해야하는 건가요
음 ... 그렇게 되면 커널을 수정해야하는 건가요 지금 생각은 fexecve를 사용하는 방식을 고려하고 있습니다 문제는 메모리에 올라가있는 파일의 디스크립트를 어떻게 사용하느냐는 건데.... 아직그건 모르겠네요
---------------------------------
http://blog.naver.com/munhoney
---------------------------------
움? 그럼 그냥 파일을 실행해도 되는건가요? ㅇㅁㅇ?
파일디스크립터는 닫기 전까진 다른 데이터를 쓸 수 없을텐데, 그래도 괜찮은가요? ㅇㅁㅇ)?
그렇다면 메모리상의 가상파일시스템으로 해결하는 것이 정답일듯 싶어요. :)
음 ... 그렇게 되면 커널을 수정해야하는 건가요
음 ... 그렇게 되면 커널을 수정해야하는 건가요 지금 생각은 fexecve를 사용하는 방식을 고려하고 있습니다 문제는 메모리에 올라가있는 파일의 디스크립트를 어떻게 사용하느냐는 건데.... 아직그건 모르겠네요
---------------------------------
http://blog.naver.com/munhoney
---------------------------------
ELF 로더를 만드시면 됩니다. 파일에서 읽어오는
ELF 로더를 만드시면 됩니다.
파일에서 읽어오는 대신 메모리에 로드된 코드를 실행하도록 하시면 될거 같습니다.
libc의 ld.so를 참고하셔도 되지 않을까 싶은데 안뜯어봐서 모르겠네요.
http://stackoverflow.com/questions/1784495/linux-user-space-elf-loader
네 감사합니다. ELF 로더를 만들게 되면...
네 감사합니다.
ELF 로더를 만들게 되면... 메모리에 올려진 것을 그대로 실행 할 수 있을까요? ...
음... 잘 이해가 안되어서요.. @@
---------------------------------
http://blog.naver.com/munhoney
---------------------------------
메모리에 올려졌다는 것이???
무슨 의미인지 잘 모르겠지만... 프로그램 코드가 (자신이 억세스할 수 있는)메모리상에 존재한다면 그냥 콜하면 되지 않나요?
댓글 달기