본문 바로가기

전체 글267

[예제로 배우는 C# 프로그래밍] 열거형 enum C# 열거형 enum enum (열거형) C#의 키워드 enum은 열거형 상수(constant)를 표현하기 위한 것으로, 이를 이용하면 상수 숫자들을 보다 의미있는 단어들로 표현할 수 있어 프로그램을 읽기 쉽게 해준다. enum의 각 요소는 별도로 지정하지 않으면 첫번째 요소가 0, 두번재 요소가 1.... 처럼 1씩 증가된 값들을 할당 받는다. enum문은 클래스 안이나 네임스페이스 내에서만 선언될 수 있다. (메스드 안이나 속성 안에서는 선언되지 않는다.) 다음 예제는 Category라는 enum 타입을 정의한 예이다. Cake는 0, IceCream은 1, Bread는 2 값을 갖는다. public enum Category { Cake, IceCream, Bread } enum의 사용 enum 타.. 2022. 7. 3.
[예제로 배우는 C# 프로그래밍] 문자열 C# 문자열 문자열 문자열(string)은 큰 따옴표(")를 이용하여 표현하고, 단일 문자(char)는 작은 따옴표(')를 이용하여 표현한다. C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, System.String 클래스의 모든 메서드와 속성을 사용할 수 있다. ex. Substring() : 일정 문자열 부분만 뽑아내기 Length() : 문자열 길이 구하기 문자열은 Immutable 타입으로, 한번 문자열이 설정되면 다시 변경할 수 없다. 예를 들어, 문자열 변수 s가 있을 때 s = "C#"; 이라고 한 후에 s = "F#"; 이라고 하면 .NET 시스템은 새로운 string 객체를 생성하여 "F#"이라는 데이터로 초기화한 후 이를 변수명 s에 할당한다. 즉, .. 2022. 7. 3.
[Inflearn] 기초부터 따라하는 디지털포렌식 - 섹션 2 보호되어 있는 글 입니다. 2022. 7. 2.
[Reversing.kr] Easy Keygen 파일을 받아준다. 파일을 받아서 압축을 풀어주면 exe 실행파일 하나와 txt 텍스트파일 하나가 들어있다. ReadMe라는 이름을 가진 텍스트 파일을 열어보자. Serial이 5B134977135E7D13일 때의 이름을 찾으라고 한다. 이번에는 실행파일을 열어보았다. 이런 식으로 Name과 Serial을 입력하라고 뜬다. 일단 Exeinfo에 파일을 올려보았다. C++로 만들어졌고 패킹되지 않은 상태이다. 특별히 볼만한 사항은 없는 것 같다. 바로 OllyDbg로 열어 문자열을 검색해보았다. Correct와 Wrong이 눈에 띄는데 그쪽으로 이동해주자. 위쪽에서 또 값을 비교하고 있는데 어떻게 되는 알고리즘인지 아직 파악이 안되기 때문에 더 위쪽으로 가서 Name을 입력받는 부분을 보기로 했다. Inpu.. 2022. 7. 2.
[CodeEngn] CodeEngn Basic RCE L14 14번 문제이다. name이 codeengn일 때 serial 값을 구하라고 한다. 일단 프로그램을 실행시켜보았다. 임의의 값을 주니까 저렇게 문구가 출력되는 것을 확인할 수 있다. Exeinfo에 프로그램을 올려보았다. UPX로 패킹되어있다. 언패킹하자. 언패킹했으니 이제 OllyDbg로 열어주자. 열어준 후에 문자열 검색을 해본다. 적당해보이는 Good Job 어쩌구 부분으로 이동해주자. 위쪽을 보니까 CMP로 EAX와 ESI 값을 비교하고 있다. 둘이 다르면 주소 00401353, 즉 실패 문구쪽으로 점프를 하고, 같은 경우에는 Good Job쪽으로 간다. 따라서 EAX와 ESI 값에 어떤 값이 들어가는지를 보면 될 것 같다. 주소 0040133A에 BP를 걸고 디버깅을 해보자. 임의로 값을 저렇게.. 2022. 7. 2.
[CodeEngn] CodeEngn Basic RCE L13 13번 문제이다. 정답이 무엇이냐고 묻고 있다. 일단 프로그램을 실행시켜보았다. 비밀번호를 입력하라고 하는데, 아무 값이나 넣어보면 Bad Luck! Try again! 이라고 뜨는 것을 확인 할 수 있다. OllyDbg로 열기 전에 Exeinfo에 파일을 올려보았다. 이 파일은 C#으로 만들어졌다고 한다. 딱히 패킹된 상태는 아닌 것 같아 바로 OllyDbg로 열어보려고 했다. 안 열린다. 그래서 아까 Exeinfo 창을 다시 한번 보았는데 아래쪽에 힌트로 .NET Reflector를 사용해보라고 하는 것 같다. .NET Reflector를 다운 받아서 이걸로 프로그램을 열어보았다. 아까 출력되었던 문구를 찾았다. 코드를 좀 더 간편하게 보기 위해서 소스 코드를 추출하고 비주얼 스튜디오로 열어보았다. .. 2022. 7. 2.
[리버싱 입문] 5장 리버싱의 어려운 문제들 보호되어 있는 글 입니다. 2022. 6. 28.
[예제로 배우는 C# 프로그래밍] 배열 C# 배열 배열 배열은 일련의 동일한 데이터 타입 요소들로 구성된 데이타 집합으로서, 인덱스를 통해 배열 요소에 접근할 수 있다. C#에서 배열은 Zero-based Array로, 첫번째 요소가 인덱스 0이다. 배열의 요소는 [ ] 안에 인덱스를 넣어 표시한다. ex. 배열 A의 첫번째 요소는 A[0] C# 배열은 1차, 2차, ..., 32차 배열 등을 가질 수 있다. (최대 32차) 2차 이상의 다차원 배열은 각 차원별 요소 크기가 고정된 rectangular 배열과 각 차원별 크기가 서로 다른 가변 배열로 나눌 수 있다. // 1차 배열 string[] players = new string[10]; string[] Regions = { "서울", "경기", "부산" }; // 2차 배열 선언 및 초.. 2022. 6. 27.
[예제로 배우는 C# 프로그래밍] 변수 및 상수 C# 변수 및 상수 변수 C# 변수는 메서드 안에서 해당 메서드의 지역 변수로 선언되거나 클래스 안에서 클래스 내의 멤버들이 사용하는 전역 변수(필드)로 선언될 수 있다. 지역 변수는 기본 값을 할당받지 못하기 때문에 반드시 사용 전에 값을 할당해야 하는 반면, 전역 변수(필드)는 값을 할당하지 않으면 해당 타입의 기본값이 자동으로 할당된다. ex. int 타입의 필드인 경우 기본값 0이 할당 변수의 이름은 대소문자를 구별한다. 변수 예제 using System; namespace ConsoleApplication1 { class CSVar { //필드 (클래스 내에서 공통적으로 사용되는 전역 변수) int globalVar; const int MAX = 1024; public void Method1().. 2022. 6. 27.