2018-11-29
HDD를 파괴하는 C언어 Source Code
& Debugging
- 실습 1
- Parmeter 없는 소스를 구현
- Parmeter 없는 소스를 구현
[ 소스코드 ]
strcmp(A,B) : A와 B를 비교(문자열 일 때)
함수의 원형(proto type)->함수의 사용법
- Release Mode
- [EBP-4]와 [EBP-8]로 함수가 두개임을 추측
- 00401026 -> JL 이면 0401006 => DO WHILE 문 추측
- JL(Jump if Lower than)
- CDQ (Convert DWORD to QWARD)
- EDX부분을 00000000으로 정리
- EDX(????????) : EAX(0102020) -> EDX(00000000) : EAX(00000002)
- IDIV ECX
- EDX(32bit) : EAX(32bit)를 ECX로 나눗셈
EAX: 몫, EDX: 나머지
- CPU 주요구성
- ALU : 사칙연산, SHIFT연산, BIT연산
- FPU : 부동소수연산(악성코드만들때는 사용안함)
AL(8Byte)
= 1/4EAX
=AX+AX(AH+AL)
FFFFFF=-1(음수일 경우)
[ 참고 ]
EAX에 반환값이 들어감(대체적으로)
TEST A, B = A and B(AND연산)
=> 0000 and 0000=0000 ->ZF=1
- Win32 API (까만창안뜨는, 악성코드용)
#include<Windows.h>int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){return 0; }
- 파일다루기
- Handle(핸들) : 하드디스크에 있을 때는 파일명, 메모리에 로딩되면 핸들값으로 파일 내용을 읽고 쓸 수 있다. (열기전에는 파일이름, 열고 난 후에는 핸들값으로 파일을 구분)
- CreateFile : 파일을 열 때 또는 만들 때
- Handle(핸들) : 하드디스크에 있을 때는 파일명, 메모리에 로딩되면 핸들값으로 파일 내용을 읽고 쓸 수 있다. (열기전에는 파일이름, 열고 난 후에는 핸들값으로 파일을 구분)
- CreateFile : 파일을 열 때 또는 만들 때
HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, //열거나 만들 파일명 또는 장치 _In_ DWORD dwDesiredAccess, // 읽고 싶은지 쓰고 싶은지 아니면 둘다 _In_ DWORD dwShareMode, // 내가 열어서 사용하고 있는지 다른사람이 접근하면 어떻게 하지? 아무도 열지 못하게 할수도 읽기만 허용, 쓰기 허용, 삭제 허용 _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, //자식한테 상속할까? 상속할맘 없으니 그냥 NULL 하자. _In_ DWORD dwCreationDisposition,//만들지 열지 _In_ DWORD dwFlagsAndAttributes,// 파일만들 때 기본 속성 _In_opt_ HANDLE hTemplateFile // 잘안씀
);
- 실습 2
- HDD Destroy
- exe실행시킬 때,
- HDD Destroy
- exe실행시킬 때,
[ 소스코드 ]
exe파일 실행하고 5초뒤에 shutdown
[ 실행했을 때 ]
- Release Mode
- Release Mode
[ main 함수 ]
사용한 함수 확인가능
진행순서 및 방향성확인
- 시간을 정해놓고 실행
- 시간을 정해놓고 실행
[ 소스코드 ]
SYSTEMTIME 함수사용하여 시간과 분 지정
파괴
No comments:
Post a Comment