본문 바로가기

워게임/reversing.kr

replace 입력된 값에 특정 연산을 한뒤에 그 값을 주소로 하여 참조된 곳에 nop 코드로 치환함. 목적 자체가 correct 띄우는거니 얼토당토없이 점프하는 곳(0x401071)을 nop로 만드는 것을 목적으로 하여 풀어보면 됨. 일단 몇번 해보니까 사용자가 입력한 값 + 0x601605CB를 한다는 것을 알게됨 그리고 그 값을 401071로 바꿔야하니까 0x601605cb + ? = 0x401071를 유추할 수 있음. FFFF FFFF - 6016 05CB = 9FE9 FA34 9FE9 FA34 + 0040 1071 = A02A 0AA5 근데 주소를 병신같이해서그런지 00401072로 해야 됨. 더보기
ransomeware upx -d -o[output] [input] 이렇게해야 되더라. 퍼미션디나이드 왜뜨나했네 아 이거 이뮤니티로 까보면 주석 다 적어놨음 핵심부분만 설명해주면 key[n]랑 0xff를 xor하고 plaintext[n]이랑 또 xor한다고 보면될듯 b = bytearray(open('test', 'rb').read())for i in range(len(b)): b[i] ^= 0xffopen('result', 'wb').write(b)이게 xor 하는 코드 key는 반복으로 계속.. 그래서 key를 알기위해선 걍 0xff로 파일 한번 xor시켜주면 pe 특성상 null로 되어있는 공간에 key가 노출됨 letsplaychess가 key였고 복구된 파일을 열어보면 Key -> 어쩌고저쩌고 라고 나온다 더보기
imageprc 그 사용자한테 입력받은 이미지랑 리소스에 저장된 이미지랑 1바이트씩 비교함. 비교 대상 주소는 사용자 이미지([ECX])고 저장된 리소스 이미지([ECX+EAX])라는걸 확인할 수 있었음. 이미지 추출하려고 [ECX+EAX] 영역 덤프(메모리)한 다음에 BMP헤더붙이면 끝 더보기
easy_elf 소스까보면됨 걍 xor만 함. 계산하면 풀림 더보기
direct3d_fps 올디로 까보면 뭔가 이상한 문자열있음 메모리에.거 총쏴서 고구마 죽일때마다 이 문자열이 1바이트씩 바뀜거기에 하드브포걸어놓고 총쏴죽일때 체크해보면 이상한주소에서 값을 참조해, CL에 쳐박고 그 값을 이상한 문자열 1바이트랑 XOR연산을 함또 그 CL이 참조하는 부분에 하드브포 걸고 프로그램 다시 읽어보면 븅딱같은 값을 120바이트 간격으로 생성해냄.그 븅딱같은 값은 하나의 사이클마다 0x04씩 늘어남. 0x00~0xC4까지 메모리 주소 120바이트 간격으로 생성함.그리고 이 값을 문자열이랑 XOR함.문자열 길이는 참고로 총 50바이트. for i in range(len(Cipher)):print Cipher[i]^ByungDdak[i] 답 Congratulation~ Game Clear! Password.. 더보기