abexcm은 강의들이 많으니 색다른 패치법을 공개하겠습니다.

 

 

기본적인 점프문 패치법입니다.

아래 사진은 cmp 컴페어의 약자입니다.

비교문을 이용해서 자기가 자기 자신을 인식하게끄름 해서 패치하는 방식입니다.

뭐 물론 cmp eax,3 이런식으로 적어줘도 패치는 됩니다.

 

 

옆에 Z 부분이 처음에 저 부분으로 트레이스를 해서 넘어가시면 Z에 대한 플래그 영역이 0일겁니다.

그 플래그의 영역을 1로 바꿔주시면 점프가 된답니다.

 

아래 사진은 설명이 좀 길어질것 같습니다. 일단 사진먼저 보시도록 하겠습니다^^

 

 

네모칸 되어있는 것이 핵심입니다. 레지스트리 상에서돌려보면 eax 와 esi 값이 안맞아서 점프를 하지 않도록 되어있습니다.

계산 연산중 inc 는 해당 값을 1증가 시키는 겁니다. dec는 감소 입니다.

그러므로 해당값을 맞추려면 inc eax 로 값을 1 올리셔야합니다.^^

 

 

해당 사진은 JE의 반대되는 명령어 JNZ를 줌으로서 JE일때 점프를 하지않음. -> JNZ 로 바뀜으로서 역 (점프를 함)으로 변경되었습니다^^

이제부터 가장 어려운 난이도 코드 케빙을 해보겠습니다^^;

일단 올리디버그에서 휠을 조금만 내려서 00으로 채워져있는 영역중 아무대나 선택합니다^^

 

 

전 저기 있는 부분을 선택했습니다. 저 부분을 컨트롤 c를 눌러서 복사합니다.(어셈라인 복사가 가능합니다!)

메모장에 붙여넣기를 해줍니다^^

 

전 저기 있는 사진처럼 jmp 부분에다가 call addree 를 적어주겠습니다^^

 

 

그리고 지정해준 빈영역으로 돌아와서 레지스터를 확인합니다. 현재 eax, 2 esi가 1이므로 inc esi를 생성해주고 값을 연산 후

되돌아갈수있도록 retn 을 만들어줍니다.^^

이렇게 하면 코드케이빙을 이용해서 크랙이 가능해집니다! ^^

마지막 방법입니다. 좀 재밋을지도모르겠군요^^

 

 

좀 무식하지만 설명드리겠습니다^^je 가 분기문(값을 연산하여서 점프하거나 하지않는 곳 )입니다.

이곳 부터 시작하여 메시지박스 전체 스타일 부분을

지정해서 nop를 때려준겁니다 ^^;;

이렇게 해도 패치가 된답니다^^

허접한 강의들으시느라 수고하셨습니다^^;

다음부터는 동영상강좌로 해야겟군요..ㄷㄷ 손이 너무 많이갑니다!

+ Recent posts