32비트 기준레지스터EAX : 산술 연산 및 논리 연산 수행, call 함수 결과 저장EBX : 메모리 주소 저장ECX : 반복문 사용 시 반복 카운터로 사용, 반복할 횟수 지정하고 반복 작업 수행EDX : EAX 레지스터와 같이 쓰임, 부호 확장 명령 등에 사용, 큰
위 사진은 엔트리포인트에 들어가지 못한 모습이다. 이는 컴파일러 과정에서 생겨나는 코드이다. 이를 지나가기 위해서 F9를 눌러서 엔트리 포인트에 간다.위 사진은 00401000 엔트리포인트에 도착한 모습이다. 00401000이 왜 엔트리 포인트인지는 나중에 PE 구조를
루나 튜토리얼 2는 직접 어셈블리어를 분석하여서 암호가 들어있는 파일을 생성하는 것이다. eax는 함수의 결과 값을 저장한다. 만약 CreateFileA의 리턴값이 FFFFFFFF이면,jne에서 점프하지 못할 것이고 이는 Evalution period out of d
레나 3에서는 간단하게 PE구조에 대해서 공부할 수 있다. 사용할 도구는 pe view이다레나 3파일을 실행시키면 다음과 같다. 그리고 코드의 흐름은 다음과 같다. 이때 nag을 지나가는 방법은 je를 jmp로 변경시키는 방법도 있지만 pe 구조를 변경시켜서 enter
ctrl + E = 수정ctrl + g = 주소로 이동
trial 제한 풀기광고 없애기이는 다음과 같은 Numer of trilas를 보여주는 메세지 창이 생성되는 경로를 따라서 가다가 비교문이 나온 구절을 보면된다.entry point이다. 여기서 F8을 누르면서 trials 메세지 창을 띄우는 함수 호출을 찾으면 된다.
ㅁ
위 사진은 peid를 통해서 분석한 사진은이다. visual basic을 통해서 계발된것을 확인 할 수있다. visual basic은 다른 언어와 다르게 여러개의 함수를 import해서 개발한다. 아래 함수들은 문자열을 비교하는 함수들이다. 그렇기에 모듈간 참조 를 통
파일 실행시켰을 때 모습이다.vb디컴파일을 통해서 register me 클릭시 작동하는 함수의 주소(402814)을 확인한다.주소로 이동하다 보면 내가 입력한 문자열과 다른 문자열을 인자로 받는 함수가 있다.이는 문자열 비교 함수이다.결과값을 통해서 성공메세지와 실패
참고 : https://velog.io/@elfinsun/%EB%A6%AC%EB%B2%84%EC%8B%B1-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EC%8A%A4%ED%83%9D-%ED%94%84%EB%A0%88%EC%9E%84
심각한 예외는 shift+f9를 통해서 지나갈 수 없음으로 설정=> 예외로 들어가서 추가 설정을 해주어야 한다.참고 : https://tribal1012.tistory.com/313문자열 검색으로 분기문을 찾았다. 스택을 보면 어디로 돌아가야하는지 알수 있다.
등록칸에 입력 -> invalid 메시지 생성-> text 검색으로 분기문 확인 -> 등록 키값 입력 함수 들어감 -> ret 전에 xor eax, eax를 mov eax,1로 변경 -> text al, al이 1이 됨으로 zf 0이다 this licnese of x
인라인 패치인라인 패치는 코드를 직접 수정하기 어려울 때 간단히 코드 케이브(Code Cave)라고 하는 패치 코드를 삽입한 후 실행해 프로그램을 패치시키는 방법이다. 주로 대상 프로그램이 실행 압축되어 있어서 직접 수정하기 어려운 상황에 사용되는 기법이다.위와 같은
참고 블로그 : https://shipp.tistory.com/44콜스택을 사용할때, 지금보는 콜스택이 메인 쓰레드인지 확인해야된다.콜스택을 찾아서 돌아가면 어디서 호출시켜서 창을 만든지 위 사진처럼 확인 가능하다.앞선 14레나에서 설명한 것처럼 인라인 패치
다이얼로그를 통한 리버싱해보겠다.다이얼로그를 띄우기 위해서는 다이얼로그 id를 호출해야된다. 예를 들어서 다이얼로그를 띄우는 함수가 인자로 다이얼로그를 id를 인자를 넣을 때 그부분을 통해서 어디서 분기점이 이루어지는 화인하는 것이다다이얼로그 100인것을 알수있다 물론
1) 401299 주소의 함수는 401000 부터 401218이라는 함수까지 byte를 5a와 xor한다.2 ) 그다음 함수에서는 401011 ~ 401026까지 코드를 입력한다. 401000가서 다시 함수 실행한다. 함수는 403000~403128까지 byte를 b
19번은 윈도우 api를 사용하여 디버깅을 체킹하는 예제이다.총 두가지 방식을 보여준다. isdebugging 함수와 findwindow를 통해서 프로세스상 디버깅 이름을 비교하는 방시이다. 하지만 이외에도 안티디버깅은 여러가지 기법이 존재한다.https://
EP : entry pointOEP : origin entry point PEP : packed entryl point 언패킹은 OEP를 찾는 것이다. 언패킹 후 덤프를 뜨는 것이 목적이라면 먼저 OEP 까지 진입하자. 현재 EIP가 OEP에 위치한다면 플러그인 탭에
IAT 와 EAT 설명 사이트 : https://jamielim.tistory.com/entry/Reversing-IAT%EC%99%80-EAT-%EB%A1%9C%EB%94%A9-%EA%B3%BC%EC%A0%95https://idlecomputer.t
api redircetion에 대해서 배운다. 이는 iat에 dll에 내부에 있는 함수 주소를 넣는 것이 아니라 다른 함수 주소를 준다. 이 주소안에 실질적인 함수 주소가 있다. 이는 언패킹에 어려움을 준다.
패킹이 되었는데 어떠한 정보인지 모른다면pestdiopeid바이러스토탈등 다양한 프로그램에 올려보는 것이 중요하다.
아르마딜로 라는 언패킹을 하는 방식을 보여준다. 총 두가지인데 첫번째 방식은 메모리 상에서 실시간으로 패칭이고, 두번째는 일반적으로 파일을 언패킹을 한 뒤, 라이센스를 우회하는 방식이다아르마딜로라는 패커를 어떻게 알았는지가 궁금하다.
실패한 정보를 기반으로 string 서치로 분기문을 찾았다. 그 위에 call함수가 있고 test al, al이 있는 것으로 보아서 call 함수는 아이디와 비밀번호를 확인하는 함수이다.위 사진 처럼 들어가보니 mov eax, ebx가 있는 것을 확인할 수 있고, 이를
esp 트릭을 통해서, oep를 구한 뒤, 복구시킨다. 아래사진은 언패킹된 파일이다.아래 와 같은 부분이 바로 인증 루틴의 분기점이다. 이를 찾는방법은 스택을 통해서이다.registration 부분을 들어간 뒤, 멈춘다. 이후 사용자코드까지 실행을 시킨다. 코드의 시