Socket_client.py
2015.05.28
Code Injection by Python
2015.03.26
no image
DLL Injection API by Python
DLL Injection API Python Source Code 프로세스의 핸들을 구하기hProc = kernel32.OpenProcess(DesireAddress,InheritHandle,ProcessId) 권한 설정 : PROCESS_ALL_ACCESS = 0x1F0FFF 상속 여부 : True = 상속, False = 비상속으로 비상속을 선택. PID : Process ID 해당 프로세스에 가상의 메모리를 할당Virtual_addr = kernel32.VirtualAllocEx(hProcess,Address,Size,AllocationType,Protect Process Handle : -> hProc 위치 지정 : NULL의 경우 따로 원하는 주소를 설정하지 않음 (None) 할당할 위치의 크기..
2015.03.25
if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.
if f=open('test.txt','r') == True: 이나if not f=open('test.txt','r'): 은 동작 할 수가 없다. 따라서 어떠한 파일을 읽기모드로 열고자 할떄 그 파일의 존재 여부를 가지고 할 수있는 문장은 아래와 같다.try:f=open('test.txt','r')print f.read()except IOError:print "Don't Exist File..."
2015.03.05
Key_logger.py in GitHub
2015.03.05
Del_file.py in GitHub
2015.03.02
Setup.py // Py2Exe 사용법
PY2EXE py2exe를 다음 링크에서 자신이 사용하는 파이썬(Python) 버전에 맞는걸 다운로드 후 설치py2exe : [ http://sourceforge.net/projects/py2exe/files/ ] 이 프로그램을 사용하기 위해서는 기본적으로 파이썬(Python)이 PATH로 지정이 되어있어야합니다. 내컴퓨터 (또는 컴퓨터) -> 속성 -> 고급 시스템 설정 -> 환경변수 PATH 항목에 파이썬(Python)이 설치되어있는 디렉토리를 추가해줍니다. 이제 exe 파일로 만들어줄 파이썬(Python) 프로그램이 있는 디렉토리에 setup.py 파일을 작성해줍니다. #Setup.pyfrom distutils.core import setup import py2exe setup(console=['f..
2015.02.26
Steal_Path.py in GitHub
os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.os.path.exists(path) : 해당 경로가 존재할 경우 True를 반환하며 없을 경우 False 반환 os.system(command)를 실행하며, 성공한 경우 0을 반환합니다.이것을 이용하여 파일을 복사할수도 있다. os.listdir(path)해당 경로(path)에 존재하는 파일과 디렉터리들의 리스트를 반환합니다. shutil.copy(src, dst)src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉토리 이름이라면 src라는 파일이름으로 dst이라는 디렉토리에 복사하고 그 이름이 존재하면 덮어쓰게 된다.import shutilshutil.copyfile('smp.txt','smp_1...
2015.02.26

Socket_client.py

Kail-KM
|2015. 5. 28. 19:05



'Programming > Python' 카테고리의 다른 글

Search_File.py  (1) 2015.06.20
Socket_server.py  (0) 2015.05.28
Code Injection by Python  (1) 2015.03.26
DLL Injection API by Python  (0) 2015.03.25
if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.  (0) 2015.03.05

'Programming > Python' 카테고리의 다른 글

Socket_server.py  (0) 2015.05.28
Socket_client.py  (0) 2015.05.28
DLL Injection API by Python  (0) 2015.03.25
if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.  (0) 2015.03.05
Key_logger.py in GitHub  (0) 2015.03.05

DLL Injection API



Python Source Code




프로세스의 핸들을 구하기


hProc = kernel32.OpenProcess(<1>DesireAddress,<2>InheritHandle,<3>ProcessId)

<1> 권한 설정 : PROCESS_ALL_ACCESS = 0x1F0FFF

<2> 상속 여부 : True = 상속, False = 비상속으로 비상속을 선택.

<3> PID : Process ID



해당 프로세스에 가상의 메모리를 할당


Virtual_addr = kernel32.VirtualAllocEx(<1>hProcess,<2>Address,

<3>Size,<4>AllocationType,<5>Protect

<1> Process Handle : -> hProc

<2> 위치 지정 : NULL의 경우 따로 원하는 주소를 설정하지 않음 (None)

<3> 할당할 위치의 크기로 len(dll_file)

<4> 할당 유형 : Commit(0x1000) or Commit&Reserve(0x3000)

<5> 보호(권한) : ReadWrite = 0x04

 



해당 메모리의 위치에 DLL 파일을 기록


kernel32.WriteProcessMemory(<1>hProcess,<2>BaseAddress,<3>Buffer,<4>Size,<5>NumberOfByteWritten)

<1> hProc

<2> Virtual_addr : 지정 프로세스에 데이터가 기록될 주소

<3> 기록될 내용 : dll_file

<4> 크기 : len(dlll_file)

<5> 지정된 프로세스로 전송 된 바이트의 수를받는 변수의 포인터로 NULL > Ignored (NULL)




LoadLibraryA 함수의 위치를 구한다(상대프로세서가 아니라 자신에게서 구함,위치가 같기에)


hmod = kernel32.GetModuleHandleA(<1>ModuleName)

<1> kernel32

load_addr = kernel32.GetProcAddress(<1>hModule,<2>ProcName)

<1> hmod

<2> ‘LoadLibraryA’

 


원격 스레드를 생성


Kernel32.CreateRemoteThread(<1>hProc,<2>ThreadAttributes,<3>StackSize,<4>StartAddress,<5>Parameter,<6>CreationFlags,<7>ThreadId)

<1> hProc

<2> Security Attributes : NULL의 경우 Default로 설정이 된다.

<3> 0으로 설정 할경우 Default로 설정

<4> 스레드에 의해 실행될 함수의 주소 load_addr

<5> 변수에 전달될 스레드함수 > virtual_addr

<6> 스레드 생성 제어 플러그로 ‘0’의 경우 스레드 생성된 즉시 실행

<7> NULL의 경우 리턴값이 없다. ( NULL )


DLL_Injector.exe






'Programming > Python' 카테고리의 다른 글

Socket_client.py  (0) 2015.05.28
Code Injection by Python  (1) 2015.03.26
if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.  (0) 2015.03.05
Key_logger.py in GitHub  (0) 2015.03.05
Del_file.py in GitHub  (0) 2015.03.02

if f=open('test.txt','r') == True:  이나

if not f=open('test.txt','r'):     은 동작 할 수가 없다.



따라서 어떠한 파일을 읽기모드로 열고자 할떄 그 파일의 존재 여부를 가지고 할 수있는 문장은 아래와 같다.

try:

f=open('test.txt','r')

print f.read()

except IOError:

print "Don't Exist File..."

'Programming > Python' 카테고리의 다른 글

Code Injection by Python  (1) 2015.03.26
DLL Injection API by Python  (0) 2015.03.25
Key_logger.py in GitHub  (0) 2015.03.05
Del_file.py in GitHub  (0) 2015.03.02
Setup.py // Py2Exe 사용법  (0) 2015.02.26





'Programming > Python' 카테고리의 다른 글

if f=open('test.txt','r') == True: ||if not f=open('test.txt','r'): 은 안된다.  (0) 2015.03.05
Key_logger.py in GitHub  (0) 2015.03.05
Setup.py // Py2Exe 사용법  (0) 2015.02.26
Steal_Path.py in GitHub  (0) 2015.02.26
Memo.py in GitHub  (0) 2015.02.26

PY2EXE


 

py2exe를 다음 링크에서 자신이 사용하는 파이썬(Python) 버전에 맞는걸 다운로드  후 설치

py2exe : [ http://sourceforge.net/projects/py2exe/files/ ]



이 프로그램을 사용하기 위해서는 기본적으로 파이썬(Python)이 PATH로 지정이 되어있어야합니다.

내컴퓨터 (또는 컴퓨터) -> 속성 -> 고급 시스템 설정 -> 환경변수



PATH 항목에 파이썬(Python)이 설치되어있는 디렉토리를 추가해줍니다.

이제 exe 파일로 만들어줄 파이썬(Python) 프로그램이 있는 디렉토리에
setup.py 파일을 작성해줍니다.

#Setup.py

from distutils.core import setup
import py2exe

setup(console=['filename.py'],)


위와 같이 작성을 완료 하였다면 밑에와 같이 명령을 입력합니다.

c:\변환하고자하는 프로그램경로>python setup.py py2exe




CMD창에 이미지처럼 실행이 되면서 build dist 디렉토리가 생성이 됩니다.

dist 디렉토리에 가보시면 변환이 완료된 파일들이 있는데 그 파일들중에서 밑의 것외에 다른 파일은 지워도 상관이 없습니다.

python27.dll
library.zip
filename.exe






'Programming > Python' 카테고리의 다른 글

Key_logger.py in GitHub  (0) 2015.03.05
Del_file.py in GitHub  (0) 2015.03.02
Steal_Path.py in GitHub  (0) 2015.02.26
Memo.py in GitHub  (0) 2015.02.26
Simple memo(Jump2Python)  (0) 2015.02.02



os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.

os.path.exists(path) : 해당 경로가 존재할 경우 True를 반환하며 없을 경우 False 반환


os.system(command)

<command>를 실행하며, 성공한 경우 0을 반환합니다.

이것을 이용하여 파일을 복사할수도 있다.


os.listdir(path)

해당 경로(path)에 존재하는 파일과 디렉터리들의 리스트를 반환합니다.


shutil.copy(src, dst)

src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉토리 이름이라면 src라는 파일이름으로 dst이라는 디렉토리에 복사하고 그 이름이 존재하면 덮어쓰게 된다.

import shutil

shutil.copyfile('smp.txt','smp_1.txt')


glob(pathname)

glob모듈은 해당 디렉토리내의 파일들을 읽어서 리스트로 돌려준다. *, ?등의 메타문자를 써서 원하는 파일만을 읽어들일 수도 있다.

다음은 C:/Python이란 디렉토리에 있는 파일중 이름이 Q문자로 시작하는 파일들을 모두 찾아서 리스트로 돌려준 예이다.

>>> import glob 

>>> glob.glob("C:/Python/Q*") 

['C:\Python\quiz.py', 'C:\Python\quiz.py.bak']     

>>>


참고 https://wikidocs.net/33

'Programming > Python' 카테고리의 다른 글

Key_logger.py in GitHub  (0) 2015.03.05
Del_file.py in GitHub  (0) 2015.03.02
Setup.py // Py2Exe 사용법  (0) 2015.02.26
Memo.py in GitHub  (0) 2015.02.26
Simple memo(Jump2Python)  (0) 2015.02.02