검색결과 리스트
분류 전체보기에 해당되는 글 116건
- 2018.01.17 [기초] 메시지 후킹(Message Hooking)
- 2018.01.16 [보안뉴스] 2018년 정보보안 트렌드
- 2018.01.15 DLL 이젝션(프로그램)
- 2018.01.11 DLL(동적 라이브러리) 생성 및 사용 방법
- 2018.01.10 [PHP 기초문법] 데이터베이스
- 2018.01.09 [PHP기초문법] 파일제어
- 2018.01.08 [기초문법/PHP] include와 namespace
- 2018.01.05 [기초문법] 배열
- 2018.01.04 [기초문법] 함수
- 2018.01.02 [기초문법] 제어문
글
[기초] 메시지 후킹(Message Hooking)
메시지후킹(Message Hooking)
: 영어로 Hook는 갈고리, 낚시 바늘 정도의 뜻을 지닌다. 원하는 것을 낚아챌 때 낚시 바늘을 사용한다.
메시지 후킹은 컴퓨터의 어떤 것을 낚아채기 위해서 사용되는데, 과연 어떤 것을 낚아채는 걸까?
후킹이란 다른 프로세스에 걸려서(Hooked) 해당 프로세스의 정보를 얻어 오거나, 변경하는 것이 가능한 기술이다.
프로세스란 윈도우의 프로세스라고 생각하면 되겠다.
어떤 건물의 전화를 도청을 하고 싶다. 그러면 건물의 전화선들이 지나가는 곳에 도청 장치(후킹 프로시저)를 설치한다.
그럼 도정장치의 전화 내용들이(windown Message) 지나간다. 도청 장치는 그 중 필요한 메시지를 저장하고 있거나, 필요한 곳으로 전송한다.
후킹 함수를 만들기 위해서는 지켜야 하는 규칙
1. Call Back 함수여야함
2. 함수의 마지막 부분에서는 CallNextHookEx() 함수를 호출함
3. 함수가 받는 인자는 정해져 있음
4. 후킹 프로시저는 DLL 안에 있어야함
LRESULT CALLBACK KeyboardProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
if( nCode >= 0 )
{
}
// We must pass the all messages on to CallNextHookEx.
return ::CallNextHookEx( g_Hook , nCode , wParam , lParam );
}
1. Win32 Dynamic Link Library 프로젝트 생성
2. Cpp 파일 위의 후킹함수를 만들어줌
후킹 프로시저를 시작하는 함수, 종료하는 함수
후킹 프로시저를 시작하는 함수
HHOOK SetWindowsHookEx(
int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);
MSDN : https://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx
후킹 프로시저를 종료하는 함수
UnhookWindowsHookEx() 의 사용법
BOOL UnhookWindowsHookEx(
HHOOK hhk
);
MSDN : https://msdn.microsoft.com/en-us/library/ms644993(v=vs.85).aspx
'보안 > 리버싱' 카테고리의 다른 글
[리버싱 기초] Hello World !! (0) | 2018.02.28 |
---|---|
Lena 리버싱 - 튜토리얼 1강 pdf 파일 (0) | 2018.02.12 |
DLL 이젝션(프로그램) (0) | 2018.01.15 |
코드엔진 level19 (0) | 2017.09.12 |
코드엔진 level18 (0) | 2017.09.11 |
글
[보안뉴스] 2018년 정보보안 트렌드
정보보안 트렌드는 이렇고 개인적으로 생각하는 우리나라의 정보보안에 대한 인식도가 낮은 편에 속한다. 정보화 기술에 발달에
실물 은행보다 전산적으로 이용이 가능한 카카오뱅크 라든 지 그런 형태의 은행이 도입이 되면서 점점 더 보안에 강화를 해야하는
상황이 도래되고 있다.
개인적인 부분에서 관리를 해도 사이트를 가입을 하는 곳이 많은 경우엔 혼자서 어느 사이트에 가입을 했는 지 기억이 안 될뿐더러
잊고 있는 기간동안 업체에서 해킹을 당하게 된다는 상황이 발생될 수도 있다. 몇 년이 지나지 않은 네이트의 해킹사례 라든지
큰 사이트도 해킹을 당하는 사태가 벌어지고 있는 가운데, 업체에서도 더욱더 강력한 정보보안에 힘을 써야하지 않나 싶다.
'보안 > 최신뉴스' 카테고리의 다른 글
암호화폐 채굴 코드, 점점 더 공격적으로 변해간다. (0) | 2018.01.26 |
---|---|
암호화폐 거래소의 사이버 보험 가입, 핵심은? (0) | 2018.01.24 |
인텔 멜트다운, 스펙터의 패치를 적용하지 말라. (0) | 2018.01.23 |
전 세계 웹 서버를 ‘앵벌이’시키려는 루비마이너 멀웨어 발견 (0) | 2018.01.22 |
인텔 CPU 게이트!! (0) | 2018.01.19 |
글
DLL(동적 라이브러리) 생성 및 사용 방법
Miscrosoft사에서 발행한 DLL 파일을 생성 및 사용하는 방법을 웹페이지에 작성해놓았다. 참조하면 좋을 것 같다.
https://msdn.microsoft.com/ko-kr/library/ms235636.aspx
글
[PHP 기초문법] 데이터베이스
[데이터베이스]
데이터베이스란?
: 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합(네이버 지식백과 참조)
1 2 3 4 5 6 7 8 9 | <?php $db_host = "localhost"; // 자신의 컴퓨터를 뜻함 $db_user = "root"; // DB에 접속할 아이디 $db_passwd = "1234"; // DB에 접속할 아이디의 비밀번호 $db_name = "mytest"; // DB명 $db_port = 3306; // 없어도 무방함 $conn = mysql_connect($db_host, $db_user, $db_passwd); // DB에 접속할 함수의 값을 $conn변수에 저장함 mysql_select_db($db_name); // DB에 접속 ?> | cs |
'기초 > PHP' 카테고리의 다른 글
[PHP기초문법] 파일제어 (0) | 2018.01.09 |
---|---|
[기초문법/PHP] include와 namespace (0) | 2018.01.08 |
[기초문법] 배열 (0) | 2018.01.05 |
[기초문법] 함수 (0) | 2018.01.04 |
[기초문법] 제어문 (0) | 2018.01.02 |
글
[PHP기초문법] 파일제어
[파일제어]
파일 오픈
1 2 3 4 5 6 7 8 9 10 11 | <?php $file = './readme.txt'; $newfile = './readme.txt.bak'; if(!copy($file, $newfile)){ echo "File copy is failed"; } else{ echo "File copy is Success"; } ?> | cs |
같은 경로에 newfile로 선언한 이름으로 파일이 생성된 것을 볼 수 있다.
'기초 > PHP' 카테고리의 다른 글
[PHP 기초문법] 데이터베이스 (0) | 2018.01.10 |
---|---|
[기초문법/PHP] include와 namespace (0) | 2018.01.08 |
[기초문법] 배열 (0) | 2018.01.05 |
[기초문법] 함수 (0) | 2018.01.04 |
[기초문법] 제어문 (0) | 2018.01.02 |
글
[기초문법/PHP] include와 namespace
[Include]
include란? PHP에서 include는 다른 php문서를 참조할 경우에 사용을 한다. 화면에 출력 되는
사이트에는 소스보기를 이용하거나 코드를 볼 수 있는데, 이 소스를 숨겨서 필요할 때 include로
참조를 하여 주요 php문서를 숨기기 위해 사용한다.
1 2 3 4 5 6 | <?php function helloworld(){ return "Hello World!!"; } ?> | cs |
참조할 php문을 작성한다. 참조하는 php 문서를 func2.php로 저장을 한다.
1 2 3 4 5 6 | <?php include 'func2.php'; echo helloworld(); ?> | cs |
func2.php를 include문을 이용하여 로드한다. 그래서 func2.php에 코딩한 함수 helloworld()를
출력한다.
실행화면
include 문을 사용하여 php문서를 로드할 수 있다. 하지만 include문 말고도 로딩할 수 있는 명령이
여러 개가 존재한다.
- include
- include_once
- require
- require_once
4가지의 형태가 있고, include문을 사용해서 로딩을 했을 때는 파일을 실행하지 않고, 경고문을 보내지만
require문 경우엔 php문을 실행중지 시킴으로써 사용이 안 되게 한다.
include.php 문서를 이렇게 수정을 해서 실행을 시켜보자.
1 2 3 4 5 6 7 8 | <?php require 'func2.php'; echo helloworld(); require ('func2.php'); echo helloworld(); ?> | cs |
실행화면
위의 형태로 로딩을 했을 경우엔 올바르게 출력이 되지만, 밑의 방법으로 로딩을 할 시 오류가 뜬다.
[namespace]
namespace란? namespace란 a.php와 b.php 각각의 코드엔 hellofunc()라는 함수란 동일한 이름의 함수가 있을 때
a.php의 hellofunc()와 b.php의 hellofunc()를 따로 따로 구분짓기 위해 사용된다.
kohello.php
1 2 3 4 5 6 7 8 | <?php namespace lang\ko; function helloworld(){ return "안녕하세요"; } ?> | cs |
enghello.php
1 2 3 4 5 6 7 8 | <?php namespace lang\eng; function helloworld(){ return "HelloWorld!"; } ?> | cs |
name.php
1 2 3 4 5 6 7 8 | <?php include_once 'kohello.php'; include_once 'enghello.php'; echo lang\ko\helloworld(); echo lang\eng\helloworld(); ?> | cs |
실행화면
간단하게 이야기하면 ko라는 방을 만들고, eng라는 방을 만들어서 각각의 방 안에 helloworld()
함수를 만들었다. 그래서 각 방의 이름을 앞에 붙여서 helloworld()함수를 호출하면 된다.
'기초 > PHP' 카테고리의 다른 글
[PHP 기초문법] 데이터베이스 (0) | 2018.01.10 |
---|---|
[PHP기초문법] 파일제어 (0) | 2018.01.09 |
[기초문법] 배열 (0) | 2018.01.05 |
[기초문법] 함수 (0) | 2018.01.04 |
[기초문법] 제어문 (0) | 2018.01.02 |
글
[기초문법] 배열
[배열]
배열이란? 앞서 배웠던 자료형이 여러 개의 방을 가지고 있다는 뜻이다. 연속된 방에 다른 값을
넣어 사용하는 게 배열이다.
int 타입의 '$a'란 변수가 있는데, 변수 뒤에 '$a[5]'를 하면 변수 '$a'와 같은 타입의 변수가 5개가
나열이 되어서 선언이 된다.
a[0] |
a[1] |
a[2] |
a[3] |
a[4] |
☆ 배열의 선언
: 배열 선언을 할려면 C언어랑 동일한 방법으로 사용하면 되는데, $배열명 = array(); 혹은 [];로 선언
을 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 | <?php $a = array(); $a = ['array1', 'array2', 'array3']; for($i=0; $i<count($a); $i++){ echo $a[$i]."<br>"; } ?> | cs |
2번째 줄에 array() 함수를 이용해서 배열을 선언하고 난 후 뒤에 4번째 줄에 배열의 값을
따로 줬지만 굳이 2번째 줄처럼 배열을 선언하고 난 후에 값을 넣어주는 형태 말고, 4번째
줄을 바로 배열 선언을 하여도 상관없다.
☆ 배열 추가
* 끝에 부분에 새로운 배열을 추가할 경우
1 2 3 4 5 6 7 8 9 10 11 | <?php // $a = array(); $a = ['array1', 'array2', 'array3']; array_push($a, 'array4'); for($i=0; $i<count($a); $i++){ echo $a[$i]."<br>"; } ?> | cs |
* 끝부분에 복수 개의 값을 추가할 경우
1 2 3 4 5 6 7 8 9 10 11 | <?php // $a = array(); $a = ['array1', 'array2', 'array3']; $a = array_merge($a, ['array4', 'array5']); for($i=0; $i<count($a); $i++){ echo $a[$i]."<br>"; } ?> | cs 실 |
☆ 배열삭제
* 제일 앞 부분을 삭제할 경우
1 2 3 4 5 6 7 8 9 10 | <?php $a = ['array1', 'array2', 'array3', 'array4','array5']; array_shift($a); for($i=0; $i<count($a); $i++){ echo $a[$i]."<br>"; } ?> | cs |
실행화면
* 끝 부분을 삭제할 경우
1 2 3 4 5 6 7 8 9 10 | <?php $a = ['array1', 'array2', 'array3', 'array4','array5']; array_pop($a); for($i=0; $i<count($a); $i++){ echo $a[$i]."<br>"; } ?> | cs |
실행화면
'기초 > PHP' 카테고리의 다른 글
[PHP기초문법] 파일제어 (0) | 2018.01.09 |
---|---|
[기초문법/PHP] include와 namespace (0) | 2018.01.08 |
[기초문법] 함수 (0) | 2018.01.04 |
[기초문법] 제어문 (0) | 2018.01.02 |
[기초문법] 연산자 (0) | 2018.01.01 |
글
[기초문법] 함수
[함수]
함수란? 필요한 기능의 코드를 묶어서 필요한 순간에 호출하여 사용할 때 쓴다. 여러 번 반복되는
코드를 한 꺼번에 묶어서 코드를 재사용할 수 있게 한다.
1 2 3 4 5 6 | <?php function 함수명(인자, 인자2){ // Code return 반환값; } ?> | cs |
[함수의 형식]
함수는 function 뒤에 함수의 이름이 오고, 괄호가 온다. 괄호 안에는 함수에 대한 입력 값을 담을
변수의 이름이 오고, 복수의 입력 값을 받을 때는 사이에 ' , '(콤마)로 구분한다. 중괄호에는 함수가
호출 되었을 때 실행할 코드가 있다.
1 2 3 4 5 6 7 8 | <?php function echoprint($a, $b){ echo "a의 값은 = ".$a."이고, b의 값은 = ".$b." 이다."."<br>"; } echo echoprint(1, 4); ?> | cs |
함수의 인자값을 돌려받을 때(return으로 값을 넘김을 받을 때)
1 2 3 4 5 6 7 8 9 10 | <?php $val = 10; function val_return($val2){ return $val2; } echo val_return($val); ?> | cs |
선언되어 있는 값을 함수로 넘겨받아서 함수 안에서 처리를 하고, 처리된 값을 리턴을 해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $val = 10; function val_return($val2){ $val2++; return $val2; } $val3 = val_return($val); echo $val3; ?> | cs |
- return을 해주는 7줄에서 증감연산자를 사용하였을 경우 return값은 증가된 값을
넘기는 것이 아니라 넘긴을 받은 $val2 값을 그대로 리턴한다. 그 이유는 증감연산자
자체가 문장 다음줄에 값을 증가를 시키지만 $val2는 리턴을 한 상태에서 함수가 종료
된 후에 증감이 되는 형식이라서 함수가 return을 한 상태면 이미 함수 자체가 끝났다.
그래서 return 넘기는 부분에서 증감연산자를 사용하며 아무 소용이 없게 된다.
'기초 > PHP' 카테고리의 다른 글
[기초문법/PHP] include와 namespace (0) | 2018.01.08 |
---|---|
[기초문법] 배열 (0) | 2018.01.05 |
[기초문법] 제어문 (0) | 2018.01.02 |
[기초문법] 연산자 (0) | 2018.01.01 |
[기초문법] 변수 (0) | 2017.12.29 |
글
[기초문법] 제어문
[제어문]
제어문이란? 프로그램의 흐름을 제어한다. PHP는 절차식 언어이기 때문에 프로그램의 흐름이 기본적으로
위에서 아래로 흐르는 구조다. 이때 흐름을 거슬러 올라가거나 아니면 특정 부분으로 건너 뛰고 싶을 때,
이를 처리할 수 있는 제어구조가 필요하게 된다.
IF구문
: 표현식이 참인 경우에 다음 구문을 실행
1 2 3 4 5 6 7 | <?php $a = 10; if($a == 10){ // 괄호안이 참이면 다음을 실행 { } 안에 내용을 실행시킴. echo "a는 10이다."; } ?> | cs |
: IF 구문의 표현식이 거짓인 경우 다음 구문을 실행
1 2 3 4 5 6 7 8 9 10 | <?php $a = 10; if($a == 4){ // 괄호안이 참이면 다음을 실행 { } 안에 내용을 실행시킴. echo "a는 4입니다."; } else{ echo "a는 4가 아닙니다."; } ?> | cs |
실행결과
ELSE IF구문
: IF구문 이외의 조건을 걸어서 제어를 할 경우에 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $a = 10; if($a == 4){ // 괄호안이 참이면 다음을 실행 { } 안에 내용을 실행시킴. echo "$a는 10이다."; } else if($a == 10){ echo "a는 4가 아니고 10입니다."; } else{ echo "$a는 4가 아닙니다."; } ?> | cs |
WHILE 구문
: 해당 구문을 지속적으로 반복해서 실행
1 2 3 4 5 6 7 8 | <?php $a = 0; while($a <= 10){ echo "a의 값은 : ".$a." 입니다."."<br>"; $a++; } ?> | cs |
실행결과