반응형

PC리버싱 134

rev-basic-1 풀이

https://dreamhack.io/wargame/challenges/15 rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출� dreamhack.io rev-basic-1 풀이 Detect it easy다운로드사이트 http://ntinfo.biz/index.html .:NTInfo:. ntinfo.biz 0이랑같이 c언어이고 64비트프로그램이다 패킹이나 프로텍터는없다 puts로보아 0번이랑 비슷하게만들어진것같다 EP call함수에 bp후 저기코드를보면될것같다 0번이란 코드가 많이비슷하네 재활용했나..

rev-basic-0 풀이

https://dreamhack.io/wargame/challenges/14 문제rev-basic-0 풀이 Detect it easy다운로드사이트 http://ntinfo.biz/index.html .:NTInfo:. ntinfo.biz 일단적으로 빌드정보를보아 c언어로 코딩되있고 별다른 패킹이나 프로텍터등은 안보이고 pe가 64비트인걸 확인할수있습니다 api중에 strcmp 문자열비교도보이고 puts로 가져오는것도보이네요 아마 puts로 가져온후 strcmp로 비교하는것같네요 EP로갑니다 문자열검색중에 correct가보이네요 저위부분이 puts부분인것같으니저부분에 bp를해보십다 f7로가보면 strcmp문자열비교가나옵니다 이코드안에 rdx안에 답이있네요 끝 다른방법2 그냥여기가서 strcmp하고가서 정답..

프로그래밍(코딩,정공학)과리버싱(역공학)의활용

기초적으로 이글은 c언어 연산하고 라이브러리 파이썬의대한것들및 리버싱지식을 가진자를위해서 쓴글입니다 코딩과리버싱의 활용입니다 간단한예시를보죠 1번째예시입니다 키젠 풀이입니다 이건 abex크랙미 5번입니다 저걸 리버싱기술을 이용해서 구조및암호화원리를따면 정리하면 현재시간구하는api를활용해서 ((현재시간*5)+1000)*현재년도 이런한 식을만들었다면 저는 간단하게 키젠을풀수있는 파이썬을이용해서 datetime를이용해서 작성하면 이렇게 작성할수있습니다 이게 예제1번입니다 많은사람이이런용도로 사용하죠 예제2번입니다 우리가 api를볼때 예를들어 messageboxA를볼때 그게 어셈블리어로 보면 이해가안될수있습니다 이렇게 코딩하면서 어떻게 구성되는지 이해가더잘될수있습니다 이걸 어셈블리어로 안을보면 좀더어렵게보이지만..

리버싱초보자를 위한 어느정도 도전과제들

1디버거를깐다 예시 x64dbg ollydbg windbg immuitydbg ida 기드라등등 중하나만까세요 2크랙미 1부터 8을다운한다 미션들 크랙미1 1문자열을 바꾼다 2처음 메세지박스를 제거한다 3jmp패치를 해본다 추가4 (어떤언어로 만들어져있는지 확인한다) 크랙미2 api를 이용해 비밀번호를 추측해본다 (힌트1 visual basic api) (힌트2 BP를사용해서 vbar?????? 에 해보시오) 난이도(상) 비밀번호 알고리즘추출 후 코딩하시오 (c언어,자바,파이썬,델파이등등) 아무언어도괜찮아요 크랙미3 (언어델파이) JMP 패치말고 저안에 키젠대로 풀어본다 크랙미4 (언어 VISUAL BASIC) VB API를 이용해 BP로 해결해본다 그리고 알고리즘을따서 언어로 코딩해본다 알고리즘을 바꾸..

리버싱기초에대해서

일단적으로 처음하는사람이 어느정도 길을잡아야하는데 그부분을 어떻게 해결해야하나 카톡방도만들고 여러사람을가르치면서 딱히 좋은방법도 못찻겠고 일단적으로 가르치는건 기초트랙 1-컴퓨터구조 1-1역사 1-2CPU 1-3기타 2 리버싱 기초 2-1 레지스터 (인텔기준) 2-1-1 범용레지스터 2-1-2 플래그레지스터 2-2 어셈블리어(인텔기준) 2-2-1스택 2-3 디버거사용법 3 가장간단한 패치 3-1 jmp 3-2 nop 이정도기초배운후 어느정도 abex크랙미등이나 예시들로재미를느낀후 중급으로 조금더파는걸 추천드립니다 중급부터는 배워야할게 코드작동원리나 그런것들을 예시들로 같이살펴보면서 조금씩조금씩 프로그램들을 이해하는과정들입니다 이부분은 따로 트랙으로 어느정도 지식화보다는그냥 많은양을 같이분석하는걸로 해결할..

어셈블리어의 기초

mov를 기준으로 oprand(피연산자1) oprand2(피연산자2) commet 부분이다' 보통 피연사자가 1나만있는경우 push eax같은경우 스택영역의 eax값을올리는것이다 스택은 추후 나올예정 두가지에 예시는 이렇데 mov eax,1 이경우 opcode(명령어)는 mov고 oprand1은 eax oprand2은 1이다 앞에 oprand1이 destionation목적지가되고 뒤의 것이 소스코드가된다 3개짜리도있지만 그건 나중에하기로하자 REF(참고한 블로그및 서적들) http://seongwon654.blogspot.com/2017/06/assembly.html 어셈블리어(Assembly) 기초 0x01. 어셈블리 언어란 ? & 배우는 목적 CPU 에는 해당 프로세서에 명령을 내리기 위해 고유의 명..

플래그 레지스터

플래그 레지스터란? 1플래그 레지스터의 이름은 EFLAGS 이며 32 bit(4byte) 크기 입니다 2각레지스터 비트가 0과1 참또는거짓 on/off값을가진다 일부bit은 시스템설정 일부는 명령등 어셈블리어 실행때 설정된다 플래그 설명 1일때 0일때 OF(overflow) 자리넘침 OV(overflow) NV(not overflow) DF(direction) 방향 DN(down) UP(up) IF(interrupt) 가로채기 EI(enable) DI(disable) SF(sign) 부호 NG(negative) PL(plus) ZF(zero) 영(0) ZR(zero) NZ(not zero) AF(aux,carry) 하위 4bit의 캐리 AC(aux, carry) NA(not aux) PF(parity) ..

반응형