Python
-
[파이썬해킹프로그래밍]my_debugger_definesPython 2015. 1. 12. 23:58
my_debugger_defines 파이썬파일은 상수,자료형, 구조체등을 선언하는 파이썬파일입니다. 우선 정의부분! from ctypes import * 해당 구문에서는 ctypes모듈 전부를 임포트시킵니다. 그리고나서, 파이썬에서의 타입을 ms에서의 타입대로 하나하나 지정해줍니다 WORD 는 파이썬의 c_ushort가 되고, DWORD 는 c_ulong이됩니다. 그리고 상수 정의! 이제 0x00000001은 힘들게 입력하지않고 DEBUG_PROCESS라는 이름으로 사용할수있습니다. 전부 #define이라고 보시면되요 이제는 구조체 정의부분입니다! 각각 멤버에 함수 파라미터들을 넣고 함수를 구현시킵니다. 이 부분이 나중에 유용하게 쓰이니 잘 봐두세요~~ my_debugger_defines는 하나의 모듈로..
-
-
[파이썬 해킹프로그래밍]범용 레지스터Python 2015. 1. 9. 15:12
x86에서의 cpu는 8개의 범용레지스터를 지원합니다!! (EAX,EDX,ECX,ESI,EDI,EBP,ESP,EBX) 리버싱하면서 많이 봐왔던건데요~~ 레지스터는 더 있지만 해당 글에서는 '범용 레지스터'를 다룬다는점!!! EAX 레지스터는 산술연산수행, 함수 리턴값을 전달하기위해 사용됩니다. EAX의 E는 확장이란뜻인 Extend 를 나타내는 걸로알고있구요~ 그다음은 accumulator register라고 하네요연산을 수행한다는것을 딱 알수있습니다~~ 연산이라 하면 당연히 덧셈,뺄셈,비교같은것을 다루겠죠?? 그리고 리버싱을 할떄에도 함수가 리턴될때 그 값은 EAX레지스터에 저장되기때문에 함수가 리턴할때 EAX값을 확인해서 함수호출이 제대로됬는지를 확인할수있습니다! EDX레지스터에 대해서 알아봅시다 우..
-
[파이썬 해킹프로그래밍]C type , Python typePython 2015. 1. 9. 14:44
C언어의 구조체의 경우 struct hello{int hello1;int bye;};이런식으로 hello라는 구조체를 만들고 멤버변수 2개를 만들었습니다.이 형식은 C언어의 타입이고 파이썬의 경우는 ?!! class hello(Structure):_fields_ = [("hello",c_int),("bye",c_int), ] c언어를 써와서 그런지 c가 쉬워보이긴하네여 일단 hello라는것을 선언하고, 필드에는 멤버변수 hello와 bye를 선언했습니당각 변수 타입은 int형으로 두었구요~~~~~~~~~! 뭐 이렇대요 ㅎ... 이제 유니온! C언어에서 그냥 공부만하고 넘어갔던거같은데 실제로 써봅시담 union {long hello;int hello1;char hello2[8];}hello; hello라는..
-
PE Viewer 개발 1일차Python 2015. 1. 5. 23:28
저희 스터디그룹에서 프로젝트를 진행하기로했습니다 총 14명, 세네명씩 팀을이뤄 프로젝트를 진행하는데요, 저희팀은 PE Viewer 를 주제로 삼아서 개발했습니다. 저희 PE Viewer는 파이썬으로 제작중이며, 커맨드식으로 하고있습니다. 처음 실행한화면입니다. DoubleS, 저희 스터디그룹이름을 넣고, 프로젝트 팀이름을 넣었습니다. 박쥐는 그냥 아스키아트로 간단하게 채울수있는 문양을넣었구요 ㅎㅎ 처음에는 프로그램이름을 넣어야합니다 넣어주게되면 파이썬에서 어떠한 프로그램을 로드했는지 저장을하게되고, 이제 커맨드창으로 넘어오게됩니다. 현재 존재하는 명령어 리스트입니다. 설명도 옆에 모두 써놓았습니다. imaage base 명령어를 입력한 화면입니다. 이미지베이스값을 출력해줍니다. direntry명령입니다...
-
Python socketPython 2015. 1. 5. 20:22
파이썬 소켓입니다. 다른언어와는다르게 파이썬으론 간단하게 소켓연동을 할수있습니다 socket이란 모듈은 내장되어있는 모듈이므로 따로 설치하실필요는없습니다. s = socket... 이부분부터는 소켓을 열어주는 역할을합니다. 호스트와 포트를 알맞게 설정해주시고 s변수에 열어뒀던 소켓을 이용해 connect시키면 설정된 호스트와 포트로 접속됩니다. 추가로 print s.recv(1024) 해당 명령을 전달하면 접속한서버에서 나오는 문자열을 1024바이트만큼 뽑아 출력해주는 기능을 가지고있습니다