반응형

전체 글 229

INT 안티디버깅 정리

사용처 패커등 TLS등 다양한곳에서 사용된다 1. INT 0x3 #include #include #include int main() { while (1) { __try { __asm { int 0x3; } printf("Debugged\n"); } __except (EXCEPTION_EXECUTE_HANDLER) { printf("Not debugged\n"); } } } 첫 번째 케이스는 다음과 같이 구현된다. 일반적으로 int 0x3은 소프트웨어 브레이크 포인트이기 때문에, 정상적으로 실행이 될때는 해당 브레이크 포인트를 만나게 되면 Exception을 던지고 종료하는 구조를 갖게 된다. 하지만 디버거에서 디버깅을 진행할 때는 해당 인스트럭션을 실행해도 익셉션이 발생하지 않는다. 이를 이용해서 현재 ..

더미다 OEP찻는방법중 하나(API이용)

오늘은 더미다 OEP찻는법중하나를알아볼것입니다 그 virtualprotect API를이용해서 drive.google.com/file/d/1Dxdm12ROfqlPh4vxTJY-o2TWn_me7oPE/view?usp=sharing 파일은 여기서다운받고 업데이트나 최신일경우 다를수있고 기준으로 2버전기준 2.x 디버거는 x64dbg 플로그인 scryllahide themida 세팅 하드웨어 브레이크설정 그리고실행하면서 MZ를찻으면된다 스택영역을 보면 위에 MZ시그니쳐가있고 400000 1000이니 0x401000이 OEP다

IAT 테이블상 우선순위(실험)

IAT에서 불러올떄우선순위가있을까를 기준으로한실험 틀릴것나 이상할시 댓글에남겨주세요 저는 이해못하겠지만 원본이다 밑에 IAT영역을 주시해라 ordinary (hint)값을 바꾼것 마지막으로 name값수정 실험결과 ordinary(hint)수정본은 정상 실행 name은 고장 디버거로 안을보면 두 iat의 차이점을 원본과비교하면 원본 name orinary(hint) 이다 총정리 우선순위는 name이더높다 실행해서 iat를보면 알수있다

PC리버싱/기타 2020.07.27

리버싱 여러사람 가르치면서 느낀 생각

어차피 끝까지 가는사람이 결국 잘하는사람입니다 근데 대부분은 큰벽을 보고 포기합니다 리버싱은 언제나 새로운 벽 큰벽이 많이 있는곳이라 생각합니다 가면갈수록 더어려운 벽이 길을 막고있습니다 답없이 그저 도전하고 도전하면서 조금씩 지식을 얻는것만이 진짜 지식인가 아니면 그걸 조금더 편하게하기위해 답을알려준다면 관연 리버싱을 재대로할수있을까

PC리버싱/기타 2020.07.25

연락할 연락처(질문환영)

카톡아이디 open.kakao.com/me/dhhd Dhhd/학생님의 오픈프로필 학이불사즉망 사이불학위태/나는 예시가되야만한다 예외가아니라/악성코드환영/1대1과외환영 open.kakao.com 리버싱 스터디방 환영 초보 https://open.kakao.com/o/gnZidHHe 프로그래밍&리버싱 #정보공유 #역공학 #컴퓨터구조 #C언어 #C++ #유니티 open.kakao.com 1대1 질문및 기타방 https://open.kakao.com

나의대해서 2020.07.25

리버싱 공부순서및 커리쿨렴(주관적)

알면 좋은지식(중간까지는 몰라도되는지식) 운영채제 원리 커널/유저 작동원리 C언어 C++ c# 뎋파이 파이썬등 프로그래밍언어 많을수록좋아요 컴파일러들도 포함(예 Visual Studio) 컴퓨터역사 및 부품의진화 1리버싱 본격적인 시작전의준비 1-1 리버싱이란(프로그램을 분석하여 작동원리를 알아내는것) 추가정보(꼭어셈만으로 리버싱을 하지는않는다 C#같은언어는 dnspy등으로 소스코드보면서 수정이가능한 몇개가있다) 1-2그래도 리버싱하는사람이라면 알아야하는 어셈블리어 팁(어셈은 영어를알고 어원을 알면 쉽게 외울수있다 예시Add/addition/더하다 1-3디버거 선택하기(여러개를 선택해도좋다) https://dhhd-goldmilk777.tistory.com/120 디버거들 총정리 디버거 사용법 참고 ID..

PC리버싱/기타 2020.07.25

x64dbg사용법

2-2 디버거사용법(X64dbg) (1) 프로그램 코드 어셈블리어 와 명령어를 나타내고 있는 코드 부분 (2) 레지스터 CPU의 레지스터의 값을 보여주고 실행하면서 값변화 확인가능 (3) 실행 상태 실행되고 있는 각해당위치의 오프셋 과변경된 메모리주소 힌트 (4) 함수스택 프로그램 코드에서 사용되는 매개변수와 지역변수의위치를 레지스터 값으로 표현 (5) 메모리 메모리 공간의 값을 사용자 지정으로 HEX,ASCII등으로 볼 수 있고 실행하면서 데이터 변화등을 알수있다 (6) 스택 함수에서 사용되는 스택 확인 및 원하는 주소의 스택 영역 값 확인 가능 위메뉴를 클릭할시 나오는 메뉴들 사실상 주로 사용하는기능들만 정리하면 F9 파일로드후 F9로 시작점으로 가는용도 사실상 젤많이씁니다 Ctrl+F2 프로그램을 ..

PC리버싱/기타 2020.07.14

리버싱 연구 C언어 전역변수와 지역변수에대해서

전역변수는 함수 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있는 변수입니다.지역변수는 함수 내부에서 선언된 변수로, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수입니다. 함수 외부에서는 접근할 수 없습니다#define _CRT_SECURE_NO_WARNINGS // scanf용 #pragma once // scanf용 #include #include char a[] = "Dhhd1"; void main() { char b[] = "Dhhd2"; printf("%s\n", a); printf("%s", b); }지역변수 전역변수 다른 예제의경우#define _CRT_SECURE_NO_WARNINGS // scanf용 #pragma once // scanf용 #include #inclu..

replace 풀이 및 해설

아무값을 넣고해보면 0x90 은 nop이다 eax주소값에 nop 처리하는 명령에서 오류나는걸볼수있다 x64dbg 오류다 즉 저건 디컴파일이 오류나서 저렇게 구분되었다 bp 걸어두고 위에 중단점으로 가면된다 냐는 1111을 입력했다 아무튼 이번걸보면 nop처리를 잘하면 될것같다 음 알고리즘이 흥미롭네요 여러번 실행결과 1을 넣으면 0x601605CB +0x1 2을 넣으면 0x601605CB +0x2 3을 넣으면 0x601605CB +0x3 이걸 기준으로 0x401071부분을 nop 0x90처리한다고하면 근데 이값을 넣고실행하면 오류가 나고 값을 보면 1이부족하기떄문에 정답은 26871097978

Music_Player 풀이

이 mp3플레이어는 1분제한이있다 너는 1분더 듣고싶다 1분체크 검사가 이미있다 우회해봐라 그러면 정답이보일것이다 일단 이아이콘이보이면 대충 visual basic으로 코딩되었구나라고 이해하면된다 분석을 위해서는 mp3하나를 다운해보자 나처럼 mp3없었어 고민하는분들을위한 mp3다 문자열검색으로찻아볼까요 메세지박스 api로찻아볼까요? 당첨 bp를걸고 한번 낚시를시작해보죠 일단 이론부터 이해시킬려면 일단 1분은 60초이고 이걸 millsecond라면 60000이다 왜 millseconds인가 간단하다 컴에서는 그게 더자주 보이고 겁나 자주보역서 그냥 일단 mill로접근한다 hex값이 EA60인걸 주의해서보면 여기있다 수정하고해보자 답은 나왔지만 왠지 저문자열이 어디있는지알수있는 꼼수가될까 생각해본다 오호 ..

반응형