0x02 Reverse Engineer/0x02. Reversing.kr(30)
-
Simple VM solve 공개용
root 권한으로 실행 한 후 gcore를 이용하여 덤프를 뜨고 분석을 하면 된다. 여러가지 문자열들이 xor 처리 되면, 성공, 실패, 에러 등의 구문이 된다. 이런것으로 어디 루틴에 들어가면 안되는지 판단 한 후, 정적으로 리버싱을 한다. 정적으로 리버싱 하다보면, 200바이트를 가지고 노는 부분이 있는데 asm으로 살펴보면 이를 아주 많이 이용함을 볼 수 있다. 200바이트를 테이블로 만들고, 특정 함수에서 여러개로 분기되는 부분이 있고, 연산하는 부분이 있다. 그 부분들을 잘 캐치해서 코드를 작성하면 키를 구할 수 있다.
2018.12.24 -
공개용 Writeup PE Password
문제의도 PE PASSWORD Protector에 대해 이해를 하고 있는가? 패커가 언패킹이 되는 과정을 이해하고 있는가? 바이너리 열고 인증까지 소요시간 2017.12.01 ~ 2018.06.06 풀고 난 후 .. 패커를 직접 만들어 테스트를 해보고 싶어 졌다. 어셈블리어 코딩이 더 재밌어졌다. 보이는 것만 쫓아가다가는 때로는 진전이 없다. 풀기 위해 공부 한 것 PE Password Protector Simple Writeup Original과 Packed의 EntryPoint가 왜 달라져있는지를 생각해보아야 한다. 문제에서 패스워드를 입력하는 Dialog가 있다고 무조건 맹신하지 말자. breakpoint를 걸지 않고 Trace하면 Win32API의 특성에 의해 Message 큐 루틴을 벗어날 수 ..
2018.06.06 -
PEPassword
보호되어 있는 글입니다.
2018.06.06 -
공개용 CSharp Writeup
원리: ctor 즉 생성자 Form1에서 동적으로 MetMet 메서드를 호출하게 되는데 해당 메서드는 암호화 되어 있다가 프로그램이 실행 되면 복호화가 되어 망가져 있던 MetMet 메서드를 올바르게 정의하여 프로그램이 정상적으로 수행되게 된다. 출제 의도:C#의 생성자의 기능에 대해 잘 알고 있는지 ? 문제 풀기 위해 구글링 해본 것들 .ctor partial class IL ( Intermediate Language ) IL Disassembly using 지시어
2018.06.04 -
CSharp
보호되어 있는 글입니다.
2018.06.04 -
SimpleVM 풀기 전 공부 1
SimpleVM에서 EntryPoint를 복구하는 것이 첫 번째 시나리오 였기 때문에 EntryPoint를 복구하기 위해 삽질을 해본다. 우선, EntryPoint에 대해 복습을 해본다. EntryPoint는 제어가 운영체제에서 컴퓨터 프로그램으로 이동하는 것이라고 위키백과에 적혀있는데 쉽게 말하면 프로그램의 시작 지점이라고 생각하면 된다. 메인함수가 아니라 런타임 라이브러리의 한 부분이다. 엔트리포인트를 거쳐 쭉 내려가다 보면, 메인 함수를 만날 수 있다. 메인 함수에 접근하기 전 과정은 생략한다. 난 오늘은 PE가 아닌 ELF에 대해 공부하기 위해 이 글을 쓰고 있다. 이때까지 리버싱이나 포너블을 접할 때 ELF의 구조는 모르고 단순히 어셈블리로만 분석을 하다보니 이러한 문제를 만났을 때 멘탈이 한 ..
2018.06.01