본문 바로가기

분류 전체보기114

[TIL 36일차] 쓰레드 프로그래밍 이전까지는 epoll 기반으로 서버를 구성해봤다.전에 해봤던  멀티 프로세스 방식의 단점 보완되었다고 보면 된다.개인적으로 생각하기에는 요즘은 쓰레드가 대세인 것 같다.멀티쓰레드 기반의 서버전체적인 모델을 멀티쓰레드로 가져갈건지 epoll로 가져갈건지 정해야 한다.요즘 뭔가 쓰레드가 대세라 쓰레드가 더 좋은거 처럼 효율이 좋을거 같지만 실제로는 멀티 플렉싱 방법이 대체적으로 한 프로세스에서 돌아가기에 더 많이 사용된다.그러면 왜 배우냐 싶은데 혼합되서 사용되는 윈도우의 IOCP에서 쓰레드가 사용되기에 알고가면 좋다.원래 기존의 프로세스는 하나의 흐름을 전담했지만 쓰레드라는 개념이 나오면서 프로세스는 쓰레드를 담는 바구니가 되었다.하나의 프로세스 내에서 메인 함수를 호출해서 실행해갈수있는 쓰레드를 담는 .. 2024. 8. 15.
[TIL 35일차] 운영체제의 가상화 오늘 한일오늘은 펌웨어 추출을 위한 스크립트 수정을 하느라 하루를 다 보낸 것 같다. 애초에 windows에서 binwalk나 unblob 같은 추출 기능들이 사용이 불가능하니 결국 docker에 올려서 추출하기로 했다. docker 설치하고.... 띄우고 docker 에서 command로 호출하는 shell 파일은 따로 파일별로 핸들링하는 python코드로 작성되어있다. 근데 shell파일에서 시스템 콜인 exec로 python "loacl file_path" 형식으로 호출하게 되면 exec는 해당 프로세스를 종료하고 특정 프로세스를 실행하기 때문에 그 뒤에 있는 코드들이 실행되지 않을수도 있다. 특정 파이썬 파일을 실행하고 이후에 실행될 코드가 존재한다면 python file_name 형식으로 실행하.. 2024. 8. 14.
[TIL 34일차] linux -> window 포팅에 대한 나의 생각 , 지난 한 주를 돌아보며 오늘 한일linux 파일시스템을 추출하는 기능을 window로 포팅하는 기능이 왜 안되는지 되게 하는 방법은 없는지 지난 2주동안 엄청 나게 서치해봤다. 기본적으로 파일시스템을 구성하는 구조가 엄연히 다르다는 것이다. linux는 슈퍼블록이나 inode 기반으로 이루어져 있는 구조 라고 한다면 MFT을 사용하거나, NTFS시스템으로 되어있기 때문에 이 동작자체가 원활하게 돌아간다는 보장도 없고, 중간에 코어모듈에서 사용된 모듈 함수 일부분은 shell을 이용하거나, yield 시스템 콜 호출 등 , linux posix 규격 호출을 사용하기 때문에 중간에 안되는 부분이 있을 것으로 보인다. 아직 내레벨에서 만들수 있는 기능은 아닌것 같아서 네이티브로 돌리는것보다는 wsl을 이용하거나 cygwin을 이용하.. 2024. 8. 10.
[TIL 33일차] roms 파일 체크 목록....그리고 코드를 대하는 나의 자세 오늘 한일window에서 바이너리 데이터를 추출할 일은 거의 없겠지만 romsfsck2 형식 파일을 추출하는 코드의 동작은 굉장히 복잡한거 같다. 분석해본 결과 일단 roms에서 사용할 수 있는 항목들을 분류하고 이후에 오류가 날수 있는 부분을  찾아야한다. 보통 심볼릭링크와 하드링크, 체크섬 하는 기능과 크기와 아이노드 체크, 파일 재귀적 탐색, 매직 바이트 체크 등에서 오류가 날수 있으므로 위에 항목은 기본적으로 체크해야한다. 보통 파일구조마다 커널 코드에 등록되어 있기 때문에 파일 분석 코드들을 보면 매직바이트를 비교하는게 일반적이다. 코드로 봐보면 다음과 같다. def verify_checksum(romfs_bytes): total = 0 int32 = 2 ** 32 for i .. 2024. 7. 30.