본문 바로가기

Revere Engineering

IDA Pro 에서 변수에 숫자 직접 넣기.. 아래와 IDA Pro에서 C언어로 변환해서 본 화면 입니다.아래와 같이 변수에 변수나,연산식을 대입 하는경우... 절대값을 넣기 원할 경우가 있습니다.다시 어셈 코드로 보면.. 아래와 같은데.. 위에 절대값을 넣어주는 어셈 명령을 가져다가 넣어줘도..이런식으로 에러가 나서 사용을 할수가 없습니다..바이트로 강제 수정해 줘야 하는데.. 우선 명령어 자릿수가 문제 이니.... 자릿수를 늘려줘야 합니다. eax에 변수값 넣어주고 eax를 다시 넣어주는 방식이니위에 부분에 eax 에 변수값 넣어주는 부분을 절대 값 넣어주게 수정해도 되고.. 아예 두 라인을 한번에 수정해 줘도 됩니다.. 위와같이 하면 30을 변수에 넣는 효과가 있습니다.. 그리고 두 명령어를 한번에 처리하려면...IDA Pro 에 패치를 사용 .. 더보기
먼 거리로 강제 점프~ 아래와 같이 조건부 점프가 이다고 가정 할때... 점프할 거리가 멀지 않고...일반적으로 점프를 할지 말지를 고민 하는데.. 한단계 더 나가서...지정된 주조가 아닌 먼 곳으로 강제 점프를 하고 싶은 경우가 있다.. 롱점프 하는 루틴을 셈플로 보면... 헥사 코드로 E9 로 시작 하고 뒤에 4바이트는 점프할 거리이다. 거리 계산은 jmp 아래 주소 부터 목적지 까지의 거리의 헥사 값이다. 계산식은 간단 하다.. 목표 지점 주소인 00459948 에서 jmp 다음 주소인 00459484 를 빼주면... 04C5 가 된다... 다시 원 코드로 돌아와서.... 목표 지점이 출발 지점 주소가 0045942E이고.. 목표 주소가 004599BF 이니.. 004599BF - 0045942E = 0591 이 된다.... 더보기
로드메이트 프로 업그레이드 후 부팅 안되는 증상. 이건 리버싱과 관련이 없지만. 전에 포스팅 한것도 있고 해서 그냥 추가 포스팅 합니다. 개념없는 BMW 네비가 맘에 안들어서... (각성하라 BMW 코리아 !!!!) 2005년도에 쓰다가 띠어놓은 GPS 를 쓸일이 생겼습니다. 연회비도 결재하고~!! 신규 과속 단속 카메라 정보를 업데이트 파일을 받아서 업데이트 했습니다. 그런데..웬걸 업데이트 하니.. 기기가 부팅이 안되는겁니다.. 2005년에 이거 거의 마지막 쓸때도 이런 증상이 있어서 서비스 센타 전화하고 삽질하다가..해결 안되서.. 걍 개인적으로 해결한 일이문득 생각이 나더군요... (전에 보스팅 보시면 대략 나와 있습니다.) 이번엔 걍 간단하게 순서만 쓰겠습니다. 우선 로드메이트 로긴 하고...업데이트가 시작되는 순간에.. 펌웨어 파일이 풀리게 .. 더보기
어셈블러 명령어 - 분기 특정한 플래그 값에 근거한 점프 JZ 제로플래그가 1이라면 분기 (0F84) JNZ 제로 플래그가 0이라면 분기 (0F85) JO 오버플로우 플래그가 1이면 분기 JNO 오버플로우 플래그가 0이면 분기 JS 사인 플래그가 1이면 분기 JNS 사인(SIGN) 플래그가 0이면 분기 JC 캐리 플래가가 1이면 분기 JNC 캐리 플래그가 0이면 분기 JP(JPE) 패리티 플래그가 1이면 분기 JNP(JPO) 패리티 플래그가 0이면 분기 등호에 근거한 점프 JE(JZ) EQUAL(=0) 이면 분기 JNE(JNZ) EQUAL 아니면(!=0) 분기 JCXZ CX레지스터가 0이면 분기 JECXZ ECX레지스터가 0이면 분기 부호가 없는 비교에 근거한 점프 JA(JNBE) 초과면 분기한다 JAE(JNB) 이상이면 분기 .. 더보기
로드메이트 프로...업데이트 문제... 로드메이트 홈페이지에 올라와 있는 프로그램 자체에 문제가 있는거 같은데... 로드메이트 측에선....자기네가 할때는 잘 된다고... 택배로 보내라고 하는데.... 저는 회사 컴퓨터 집에 컴퓨터 다해봤는데..역시 프로그램 오류로 닫혀 버리던데.. 회사에서 같이 구매한 사람이 많아서 로드메이트 프로가 여러개 있어서... 모두 테스트 해봐도 역시 안되는데..이해가 안되네요... 원본 파일 그대로 써도 다운되고.... 디버깅 해서 다운되는 찾아서 부분 넘어가서 라이팅 성공해도... GPS가 정상 동작을 안하더군요.. 로그인 창에 관련된 브레이크 포인트 잡는걸 간단히 알려드리자면.. 이전에 여러가지 방법을 사용했지만....생략하고....간단히 설명 드리겠습니다.. 해당 프로그램은 MFC로 작성 되었습니다... 디.. 더보기
Assembler 명령어 정리 명령어 정리 명 령 어 설 명 Data Transfer MOV Move 데이터 이동 (전송) PUSH Push 오퍼랜드의 내용을 스택에 쌓는다 POP Pop 스택으로부터 값을 뽑아낸다. XCHG Exchange Register/memory with Register 첫 번째 오퍼랜드와 두 번째 오퍼랜드 교환 IN Input from AL/AX to Fixed port 오퍼랜드로 지시된 포트로부터 AX에 데이터 입력 OUT Output from AL/AX to Fixed port 오퍼랜드가 지시한 포트로 AX의 데이터 출력 XLAT Translate byte to AL BX:AL이 지시한 데이블의 내용을 AL로 로드 LEA Load Effective Address to Register 메모리의 오프셋값을 레.. 더보기