분류 전체보기(169)
-
NDIS 6.0 Filter Driver programming
NDIS를 통한 프로젝트를 진행하면서 그나마 최신 국내 NDIS 프로그래밍 포스팅이 없어서 간략하게 정리를 하려고합니다. 더 상세하게는 필요하다고 생각되면 따로 포스팅하겠습니다. 또한 저도 학생의 신분으로 이쪽으로 깊게 공부한 것은 아니기 때문에 잘못된 부분이 있으면 알려주시면 감사하겠습니다. NDIS에 대한 개념적인 소개는 생략하겠습니다. MSDN의 NDIS 6.0 Filter Driver Sample을 바탕으로 진행합니다. 우선 NDIS를 통해 할 수 있는 건 윈도우 7에서는 MAC address부터 payload까지 전부 볼 수 있습니다. WFP는 윈도우8부터 Ethernet을 볼 수 있어서 윈도우7에서 MAC을 보기위해선 NDIS를 이용해야 합니다. 솔루션을 열면 주로 filter.c를 수정하게 ..
2015.03.13 -
무분기 로직
컴파일러가 하이 레벨 언어를 로우 레벨 언어로 바꿀 때 파이프라인을 사용함에 따르는 분기에 의한 손실을 최소화 하기 위해 무분기 로직을 만들어냅니다. 파이프 라인의 끝에 다음 명령을 채울 때 분기가 있을 경우 어떤 분기된 명령들 중 하나를 쓸 수 밖에 없는데 이 때 예측이 틀리면 파이프라인을 비우고 새로 명령을 채워야 합니다. 그렇기 때문에 컴파일러는 분기가 있는 하이 레벨 언어를 분기가 없는 로우 레벨 언어로 바꾸는 작업을 합니다. - 산술 구현mov eax, [ebp-10]and eax, 0x00001000neg eaxsbb eax, eaxneg eaxret 위 작업은 분기문을 사용하지 않는데 어셈블리에 익숙하지 않다면 무슨 작업을 하는지 파악하기 어렵습니다. eax와 0x00001000의 값을 an..
2015.03.09 -
api 리버싱 3 - RtlGetElementGenericTable
RtlGetElementGenericTable의 내용입니다. MOV EBP, DWORD PTR SS : [EBP+8]MOV EDX, DWORD PTR DS : [ECX+14]MOV EAX, DWORD PTR DS : [ECX+C]- EBP로 파라미터를 ECX에 넣고 14와 C오프셋의 값으로 각각 초기화하고 있습니다. PUSH EBXPUSH ESI- EBX와 ESI의 값을 저장합니다. MOV ESI, DWORD PTR [ECX+10]PUSH EDIMOV EDI, DWORD PTR [EBP+C]- 10오프셋의 값을 ESI에 넣고 EDI값을 저장합니다. 그리고 EDI에 C 오프셋의 값을 넣습니다. EBP+8이 첫 번째 파라미터이니 +C는 두 번째 파라미터입니다. LEA EBX, DWORD PTR [EDI+1]..
2015.03.07 -
koi4u 2011년 8 월 모의고사 1 번 koi4u_vega
문제는 더블릿 옥상에 있는 koi4u_vega입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi4u_vega/koi4u_vega.php?pname=koi4u_vega 견우와 직녀의 거리가 주어지고 까마귀의 수와 움직이는데 필요한 시간, 제한 시간이 주어질 때 견우와 직녀가 제한 시간 내에 만날 수 있는지를 구한는 문제입니다. 거리는 음수값이 들어올 수 있기 때문에 항상 양수로 계산하도록해줍니다. 까마귀는 마리 수만큼 처음 거리를 차지하므로 남은 거리를 구하고 제한 시간과 필요한 시간을 통일되도록 시간으로 바꿔줍니다. 제한 시간보다 남은거리를 이동하는데 필요한 시간이 많을 경우, 그리고 모든 까마귀로 한번에 이동할 수 있을 경우 yes를 출력해줍니다.abs는 마지막 테스..
2015.02.12 -
다중 반복문 2 climbing
문제는 더블릿 4 다중 반복문에 있는 climbing입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/climbing/climbing.php?pname=climbing 깊이 n의 높이를 1분당 u만큼 오르고 다음 1분당 d만큼 떨어질 때 몇 분만에 다 오를 수 있는지를 구하는 문제입니다. 2분당 총 오르는 높이를 구하고 2분씩 오른 결과가 n-u보다 크거나 같을 때 1분 오른 시간만 더해주면 됩니다. 이 때 한번에 올랐을 때의 예외를 처리해줍니다.
2015.02.12 -
제31회 한국정보올림피아드 시/도 지역 본선 (2014.5.24) 초등부 문제 3,중등 2 koi_ant
문제는 더블릿 옥상에 있는 koi_ant입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_ant/koi_ant.php?pname=koi_ant 공간안에 개미가 있고 대각선으로만 몇 번 움직일 수 있을 때 다 움직이고 난 후 개미의 좌표를 구하는 문제입니다. if와 for를 통해 개미의 움직임을 하나씩 따라가고 t번 움직인 후의 좌표를 구하는 방법은 t가 커짐에 따라 시간 초과가 뜹니다.공간 안을 계속 움직일 경우 항상 같은 곳으로 올 때가 있는데 이 경우를 제외하더라도 문제를 해결할 수는 없습니다.개미가 움직인 좌표를 찾아내는 공식을 도출해야합니다.1차원적으로 봤을때 w칸을 움직일 수 있는 공간에서, 개미가 현재 좌표 p에서 t번 움직였을 때의 위치는 (p+t)%w로..
2015.02.11