개발자 16

MFC 프레임워크 기반 앱 시작지점

#MFC #리버싱 #Reversing MFC 프레임 워크 기반 앱의 경우, MFC 에서 선언 해놓은 클래스들을 상속 받아서 사용자 클래스를 정의하는 식의 개발이 이루어진다. 그만큼 MFC 프레임 워크에서 기본적으로 제공해주는 기반이 상당한데, 최근 MFC 관련 앱을 리버싱해본 결과 리버싱 과정에서도 그러한 기반 클래스들이 어떻게 동작하고, Dialog 까지 생성하는지 등등 알아야할 것이 많아보였다. 흔히 금방 찾을 수 있는 main 함수의 경우에도 함수 vtable 어딘가에 심볼이 깨진채로 들어가있어서 정적분석으로는 금방 가늠하기 어렵고, 동적분석으로 해당 함수를 찾아야한다고 판단하였다. 수 많은 문서를 탐색하면서 main 포인트를 찾는 과정을 간략히 정리해보겠다. int start() { _securi..

[C++] 가상함수(Virtual Function)

#C++ #가상함수 C++ 에는 가상함수라는 개념이 있다. 같은 OOP 언어인 자바의 가상함수와 유사한데, 기본 클래스에서 가상 함수를 정의하여, 해당 기본 클래스를 상속 받는 파생 클래스가 해당 가상함수를 재정의하여 사용하도록 유도하여 Runtime 에 함수의 다형성을 높이기 위한 문법이라고 한다. 실행타임에 함수를 재정의해서 유용하게 사용할 수 있다는 것은 이해했는데, 의문점이 그냥 가상함수말고 일반적으로 함수 정의한 다음에 상속받은 클래스 단에서 오버라이드(재정의) 하여 사용하면 되지않나??? 라는 의문이었다. 정말 원론(?) 적인 이유는 다른 게시글 에 설명이 되어있었는데 엉뚱한 소멸자를 호출시키지않게 하기 위해서이다. C++ 개발 경험이 많이 없기 때문에 이러한 세세한 부분에 대해서는 생각해볼 ..

<C++ study> 2023.01.02

[2022 Wacon] ppower

#PrototypePollution #node.js #web #ppower 대회때 못푼 문제 복기입니다. 대회 중 제일 못풀어서 아쉬운 문제 문제파일은 아래와 같다. // index.js #!/usr/bin/env node const express = require("express"); const childProcess = require("child_process"); const app = express(); const saved = Object.create(null); const config = {}; const merge = function (t, src) { for (var v of Object.getOwnPropertyNames(src)) { if (typeof src[v] === "object"..

<Wargame & CTF> 2022.06.29

next.js 에서 styled-components 가 제대로 안먹힐때

styled-componets 와 next.js 을 사용하여 개발하다보면 PropclassNamedid not match 라는 오류를 본 사람이 있을 것이다. 오류가 발생함과 동시에 페이지의 CSS 가 다 풀려버리는 경우가 생기는데, 서버사이드로 렌더링되는 next.js 쪽 파일과 클라이언트 사이드에서 렌더링 되는 styled-components 의 css 의 className 이 불일치해서 생기는(?) 문제라고 한다. 이를 일관성 있게 만들어주려면, _document.tsx 를 만들어주어야하고 babel-plugin-styled-components 을 사용하여야한다. yarn add -dev babel-plugin-styled-components 일단 설치해주고, 바벨 옵션이 적용되도록 루트 디렉토리에..

반응형