REA(Reverse Engineer Anything) 사용법 — 코딩 에이전트로 바이너리와 Electron 앱 분석하기

다른 앱에서 본 기능을 내 프로젝트에도 넣고 싶을 때가 있다. 소스가 없으면 디스어셈블러를 열어 함수를 따라가야 하는데, 이 작업은 도구도 많고 시간도 오래 걸린다. REA(Reverse Engineer Anything)는 이 작업을 코딩…

Continue ReadingREA(Reverse Engineer Anything) 사용법 — 코딩 에이전트로 바이너리와 Electron 앱 분석하기

[라즈베리파이] u-boot 에서 kernel 부팅

커널을 바꿔가며 시험할 때 라즈베리파이 펌웨어에만 의존하면 매번 전원을 내리고 SD 카드를 빼서 파일을 갈아끼워야 한다. U-Boot 프롬프트까지 올려놨다면 그 자리에서 커널을 골라 올리고 부트 인자를 바꿔 다시 부팅할 수…

Continue Reading[라즈베리파이] u-boot 에서 kernel 부팅

Android 커널의 벤더 훅(Vendor Hook) 840개 — GKI가 out-of-tree 코드를 받아들이는 방식과 그 대가

Android 기기는 처음부터 메인라인과 상당히 다른 커널을 써 왔습니다. GKI(Generic Kernel Image)가 도입되면서 그 차이는 많이 줄었습니다. 그래도 지금 출시되는 기기의 커널에는 여전히 out-of-tree 변경이 대량으로 들어 있습니다. Android가 이런…

Continue ReadingAndroid 커널의 벤더 훅(Vendor Hook) 840개 — GKI가 out-of-tree 코드를 받아들이는 방식과 그 대가

리눅스 커널 7.3 릴리스 — 역대 최대 개발 주기, 자동 리뷰가 버그를 줄이고 있다는 첫 신호

리누스 토발즈가 10월 18일(현지 시간) 리눅스 커널 7.3을 릴리스했습니다. 평소처럼 9주 개발 주기였지만 숫자는 평소와 전혀 다릅니다. 프로젝트 역사상 처음으로 한 주기의 전체 커밋이 2만 건을 넘었습니다. 개발자 수는 7.2가…

Continue Reading리눅스 커널 7.3 릴리스 — 역대 최대 개발 주기, 자동 리뷰가 버그를 줄이고 있다는 첫 신호

Handy 소개

메신저 답장, 커밋 메시지, 이슈 코멘트처럼 짧은 글을 하루에도 수십 번 타이핑한다. 말로 하면 빠른데, OS 내장 받아쓰기는 플랫폼마다 다르고 리눅스에는 아예 없다. 클라우드 음성 인식 서비스는 음성을 외부로 보내야…

Continue ReadingHandy 소개

Bash에서 구분자로 문자열 나누기 — IFS read, readarray, 파라미터 확장 실측 비교

CSV 한 줄, PATH 같은 콜론 목록, 설정 파일의 key=v1;v2;v3처럼 구분자로 이어진 문자열을 배열로 나누는 일은 셸 스크립트에서 매일 나온다. 그런데 흔히 쓰는 방법들은 공백이 든 필드, * 같은 glob…

Continue ReadingBash에서 구분자로 문자열 나누기 — IFS read, readarray, 파라미터 확장 실측 비교

Python 중첩 리스트 평탄화(flatten) — 6가지 방법 성능 실측과 함정

API 응답을 페이지별로 모은 리스트, 파일마다 읽은 줄 목록처럼 리스트의 리스트를 한 줄로 펴야 하는 경우는 흔하다. 방법은 list comprehension, itertools.chain, sum(xss, []) 등 여럿인데, 어느 것이 빠른지에 대한 통념과…

Continue ReadingPython 중첩 리스트 평탄화(flatten) — 6가지 방법 성능 실측과 함정

C/C++ 비트 set·clear·toggle 정리 — 시프트 UB와 타입 폭 함정 실측

레지스터 플래그, 권한 비트, 상태 마스크처럼 정수 하나의 특정 비트만 켜고 끄는 코드는 드라이버부터 일반 애플리케이션까지 어디에나 있다. 연산 자체는 |, &, ^ 한 줄이지만, 시프트할 리터럴의 타입을 잘못 고르면…

Continue ReadingC/C++ 비트 set·clear·toggle 정리 — 시프트 UB와 타입 폭 함정 실측