본문 바로가기

전체 글

(55)
CodeEngn Basic 06 시리얼을 체크하는 문제이다이전 문제처럼 문자열 검색 (Search For - All referenced text strings) 를 통해진입하자 GoodJob ! 이 뜨면 되는 것 같은데,,바로 위에 AD46DFS547 이라는 문자열이 뭘까 프로그래밍 구조상 Char flag = "AD46DFS547"scanf(a)if(a == flag) printf("GoodJob")else printf("Wrongserial") 이런거라고 추측해볼 수 있다 끗 // 코드엔진 6번
CodeEngn Basic 05 실행시 이런 창이 뜬다. Username과 key값을 구하는게 문제이다 올리디버거에서 우클릭 - search for - all referenced text strings 를 통해문자열을 찾아보자. 이부분이 시리얼 체크 부분으로 보인다 이동해보자. 뭔가 난해해보인다. 하지만 걱정하지 말자. 아직 5번인데 어려울 수 없다.CALL 되는 함수는 F7 로 분석 해볼 수 있지만, 어떤 역할을 하는 함수인지 대충 안다면 분석할 필요까지는 없다. Beggar Off! 거지 ㄲㅈ? 라는 String 이 두번 보인다.두곳 모두 F2로 브레이크 포인트를 걸고 F8 로 진행해보자 이 주소에서 멈추게 되었다.이때 바로 위줄의 PUSH 0x0 을 확인해보니JUMP From 0040F39 이다. 이때 0040FD39 는 분기점이..
CodeEngn Basic 04 이번에도 Ctrl N 으로 목록을 훑어보니 Is Debugger present?디버거 지금 씀? 이게 답이다. 더 나아가 문제를 풀어보자 IsDebuggerPresent 함수는 디버거를 탐지하고탐지되면 1을 리턴, 탐지되지 않으면 0을 리턴하므로 CALL 하는 부분을mov eax,0 으로 바꿔주면호출하지 않으므로 간단히 우회가 가능하다 끗 // 코드엔진 4번
CodeEngn Basic 03 함수의 이름을 물었다. 올리디버거에서 Ctrl + N 을 누르면 사용도는 함수 목록이 나온다. 익숙한 Strcmp 가 나온다. 얘가 답이다. 재미가 없으므로 문제를 더 풀어보자. vbaStrCmp 함수에 브레이크 포인트를 걸고 실행하면 다음과 같은 코드가 나온다.이때 스택에 푸쉬하는 2G83G35Hs2가 이 프로그램의 키이다. 끗 // 코드엔진 3번
CodeEngn Basic 02 어허.. 어허... hex 에디터로 열어보니 수상한 녀석이 플래그이다. 끗 // CodeEngn 코드엔진 3 03
CodeEngn Basic 01 Delphi 통합환경에서 어셈블리어로 작성한 것으로 보인다. Entry Point.어렵지 않은 로직이다. MessageBox 로 자신을 속여보라는 String 을 출력하고GetDriveTypeA 를 통해 CDROM 여부를 확인 후확인시 성공출력, 실패시 실패문 출력 정도로 해석 가능하다. 여기서 잠깐 MessageBoxA 와 GetDriveTypeA API에 대해 알아보고 가도록 하자. int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); 메세지박스 출력을 위한 함수이다. *오너 윈도우 = 메시지 상자를 소유한 윈도우를 말하며 메시지 박스는 오너 윈도우의 중앙에 나타나며 메시지 박스가 떠 있는 동안 오너 윈도우는 사용할 수 없..
어셈블리 기초 gdb 명령어 Set disassembly-flavor intel Disas main B *main+number브레이크 포인트 Rrun P[변수명]특정 변수값 확인 X $[레지스터:ex:rbp-0x4]값확인 레지스터 EAX 사칙연산 리턴값 EDX 함수 파라미터 ECX for문에서 I 루프 카운터 EBX 부족대비용 ESI 시작인덱스 EDI 목적지인덱스 (ESI복 EDI붙) ESP 스택천장 EBP ESP 임시저장,스택바닥 어셈블리 PUSH 스택에 값 저장 POP 스택에서 값 뺌 MOV 값대입 LEA 주소를 가져옴 ADD src -> +dest SUB src -> -dest INT INTerrupt CALL 함수호출[오퍼랜드] INC INCrease (I++) DEC DECrease(I—) AND, OR XO..