<보안 study>/리버싱 25

스마트컨트랙트 분석환경 구성하기

최근에 Hayyim CTF 하면서 EVMatrix 라고 스마트컨트랙트를 소재로한 문제를 접할 기회가 있었는데, 블록체인&코인&스마트컨트랙트에 문외한이었던 나는 그 문제를 포기할 수 밖에 없었다 ;; WriteUp:하임이 흑화하면? 초코하임 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 해당 Write Up 을 보면서 내가 몰랐던 지식들을 가지고 분석을 할 수 있었구나 하는 생각이 들어서 한 번 스마트 컨트랙트 분석환경을 직접 구축해보기로 하였다. 스마트 컨트랙트에 대해서는 글이 널려있기에 설명을 짧게 하자면, '이더리움 거래' 를 비롯한 여러 계약(무역계약, 금융계약, 부동산 계약 등등) 에 있어서 해당 계약이 체결 되는 시점에 이행할 행동을 정의한 script 를 스마트 컨트랙트라고 이해하면 될 듯하다. 이를 통해 dApp 이나 ..

[잡지식] 안드로이드 패키지 이름에서 com 접두사의 의미

기존 자바의 패키지와 안드로이드의 자바 패키지를 구분하기 위한 패키지 이름 구분자라고 한다. 안드로이드 패키지에는 com.(기업이름).(플랫폼).~~~ 을 붙여서 패키지 이름을 구성하면 된다고 한다. 궁금해서 찾아보았음. https://stackoverflow.com/questions/26194527/com-prefix-meaning-on-android-apps com. prefix meaning on Android apps What does mean the com. prefix in some Android processes? E.g.: com.whatsapp, com.google.android.gapps, com.android.mms, com.antivirus, etc. stackoverflow.com

[게임핵개발연습#4] 게임에선 좌표계산이 어떻게 될까? - 2. screen상의 오브젝트 위치 표시하기

#게임핵 #AssaultCube #ESP #OpenGL 지난 게시글에서 나의 시점을 표시하는데에 관여하는 MVP Matrix 값을 메모리 상에서 View Matrix 의 변화를 통해 찾아보았다. 이번 시간에는 우리가 구한 MVP Matrix 값과 다른 Player 의 좌표 값을 이용하여 상대가 정확히 어디에 있는지 벽너머에서도 보이게 표시해보도록 하겠다. 그전에 OpenGL 에서 오브젝트가 우리가 보는 평면 2D screen 상에 어떻게 그려지는지에 대한 과정을 알아보도록 하자. 위 사진은 OpenGL 렌더링 파이프라인 에서 정적인 3D 좌표가 2D 스크린을 통해 우리 눈으로 들어오기까지 과정을 여러 행렬과 함께 간략히 나타낸 것이다. OpenGL API 상에서는 각 Coordinates 에 대해 변환을..

[게임핵개발연습#3] 게임에선 좌표계산이 어떻게 될까? - 1. viewMatrix 찾기

#AssaultCube #게임핵 #ESP #OpenGL 여태까지는 나 자신, 개인 플레이어에 대한 핵을 알아보고 만들어봤다. 사실 이 방법들은 온라인 상에서하는 MultiPlay 방식에선 1도 먹히지 않는다.(단, 수류탄 개수, 총알 개수 같은 일부 기능은 먹힌다) 아마 추정컨데, 체력이나 여러 정보를 여타 FPS 들 처럼 서버를 통해 관리하기 때문이 아닐까 생각한다. 그러나 우리의 최초 목표와 같이 다른 적들과 같은 팀원들의 정보는 서버에서 결국 내 PC 로 받아오는 구조가 될 수 밖에 없기에 메모리 어디엔가는 적들과 팀원들의 정보가 저장되어있을 것이다. 그러면 이 정보를 이용해서 적들의 현재 위치, 체력은 얼마인지, 총알은 얼마나 남아있는지 정도는 알 수 있지 않을까? 그것이 바로 ESP 핵 이다. ..

[게임핵개발연습#2] Local Player Object 베이스 주소 찾기

#AssaultCube #게임핵 #ESP Assault Cube 를 이용한 게임핵 개발 연습 시작. 목표는 Single Play 뿐만이 아닌 Multi Play 에서도 사용할 수 있는 ESP 핵을 만드는 것이다. ESP 핵 중에서도 상대 player 의 체력과 위치가 표시되는 월핵을 제작해보기로 한다. 지난 포스팅에 이어서 같은 Health 주소 값에 브레이크를 걸고 이번에는 피가 빠진 상태에서 힐팩으로 피를 충전해보자. 형광펜 친 부분이 힐팩에 의해 올라간 체력 값을 Health 메모리에 넣는 과정이다. 철저히 확인하자면, eax+4 는 0x028CA278 으로 Health 메모리 주소가 맞다. 그러면 EAX 에 어떻게 저 주소가 들어가게 되었을까? 분명히 Player 에 대한 구조체 혹은 클래스가 존..

[게임핵개발연습#1] 여러 Local 값과 주소 탐색

#AssaultCube #Hack #ESP Assault Cube 를 이용한 게임핵 개발 연습 시작. 목표는 Single Play 뿐만이 아닌 Multi Play 에서도 사용할 수 있는 ESP 핵을 만드는 것이다. ESP 핵 중에서도 상대 player 의 체력과 위치가 표시되는 월핵을 제작해보기로 한다. Assault Cube 는 대강 이런 고전틱한 FPS 게임인데, 게임 리버싱의 교본? 정도가 되는 게임이다. 아마 요즘 처럼 디버깅을 방해하는 요소가 적어서 그런 듯 하다. 싱글 플레이에서는 위처럼 체력, 탄창, 수류탄 개수 등의 정보를 로컬에서 자유자재로 바꾸면서 bot 들과 전투를 벌일 수 있다. 일단은 가볍게 체력 값에 대한 조정을 진행해보자. 툴은 Cheat Engine 을 사용할 것이다. 우선 ..

[IDA] Hex-Rays Code Skip 현상

#IDA #Hex-Rays IDA 디컴파일러를 쓰면 종종 발견할 수 있는 디컴파일을 안해주고 코드 스킵을 하는 현상에 대해서 알아보기로 하자. 크게 중요한 부분은 아닌데, 그냥 궁금증에 찾아본다. IDA Pro - Hex-Rays skips code 이 질문글에 달린 답변들을 종합해보면, IDA 6.8 ~ 7.2 까지는 디스어셈블리에서 문제가 있는 부분은 디컴파일 하지않고 스킵 한다고 한다. 예를 들면, 질문글에서 해당 오류는 stack pointer 관련 오류로 IDA Error : positive_sp_value_has_been_found 해당 docs 에서 조치방법도 확인할 수 있다. 그리고 위 링크를 통해서 여타 다른 에러도 볼 수 있으니 참고하자.

Ghidra-Server 기관에 직접 계정의뢰하기

GhidraServer Ghidra-Server 지난 게시글에서는 직접 내 컴퓨터에 Ghidra 서버 구성 하는 법을 작성해보았다. https://goseungduk.tistory.com/33 하지만, Ghidra-Server 기관에서는 현재 더 나은 Ghidra-Server를 위해 피드백도 받고 업데이트도 지속적으로 할 목적으로 자체 공식 서버를 파놓았다. 또한 서버 구축이 어렵거나 안정적인 서버를 원하는 단체에게는 이만한 안성맞춤이 없다. 아무래도 이번 게시글은 기술적인 글보다는 Ghidra-Server에 컨택할 수 있는 방법론에 대해 적으려고 한다. https://twitter.com/Ghidra_Server Ghidra-Server Twitter 우선 Ghidra-Server는 이메일 또는 트위터..

Ghidra-Server 환경 구성하기

GhidraServer Ghidra-Server 이번 포스팅은 팀원끼리 함께 리버싱을 할 수 있는 Ghidra-Server를 어떻게 세팅할 수 있는지 방법을 정리해보려 한다. Ghidra-Server가 제공하는 Shared Project는 리버스 엔지니어링을 하면서 처음 보는 개념이라 신기했다. 우리가 보통 여럿이서 대규모 프로젝트(악성코드 분석에서 라던지...)를 한다던지 CTF 문제를 함께 푼다던지.. 할 때 좋을 것 같다. 우선 이 글을 읽을 때 쯤이면 Ghidra는 설치 되어있을 것이라 생각하고 Ghidra 설치에 관한 내용은 생략하겠다. [server.conf] 우선 서버의 바이너리 및 프로젝트들을 담을 repository 경로를 정해주자. 필자는 Ghidra폴더 최상위에 repo라는 폴더를 만..

반응형