no image
Cain&Abel - ARP_Spoofing Attack
왼쪽에 게이트웨이의 IP를 선택을 하고 오른쪽에 목표PC의 IP를 설정해준다. (반대일수도 있다..?기억이 잘안나네)
2015.03.23
MsgBox.dll
2015.03.22
no image
RVA to RAW 쉽게 생각해보기
PE파일이 메모리에 로딩되었을 떄 각 섹션에서 메모리의 주소와 파일 옵셋을 매핑하여보자.위의 사진은 리버스코어 블로그에서 퍼온 것으로 메모리에서는 VA로 위치를 표한하며 파일에서는 Offset으로 위치를 표현하는데 그림과 같이 파일에서와 메모리에서의 위치가 차이가 나는 것을 확인할수가 있다. 그렇기에 메모리에서의 값을 확인한 후에 수정을 하고자 할때에는 직접 그 위치의 Offset 값을 구하여 찾아 가야한다. ( 물론 PEView 를 통해 편하게 할수도 있다.)RAW = RVA - VirtualAddress + PointerToRawData RAW = 파일에서의 주소RVA = 메모리에서의 주소VirtualAddress = 메모리에서의 섹션 시작 위치PointerToRawData = 파일에서의 섹션 시작 ..
2015.03.20
DDR_guard
vb6k0.dll 을 x86이면 C:\Windoes\system(x86)에 넣은후 속성에 들어가 차단해제를 설정해야함64bit의 경우 systemwow64 에 넣은후에 설정을 해야한다.
2015.03.13
눈치코치
실행중 프로그램 감추기 #원리가 뭐일까
2015.03.13
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
범용 CPU 레지스터
범용CPU레지스터 EAX : 산술 연산을 수행하기 위해 사용되거나 함수의 리턴 값을 전달하기 위해 사용된다. EDX : 데이터 레지스터로 기본적으로 EAX 레지스터의 확장 개념으로 사용된다. 즉 곱하기나 나누기 같이 복잡한 연산을 위해 추가적으로 데이터를 저장할 때 사용된다. 또한 범용 목적의 저장소로도 사용이 된다. ECX : 카운터 레지스터라 불리며, 반복적으로 수행되는 연산에 주로 사용된다. 반복 연산에서는 문자열을 저장하거나 카운트를 세는 작업이 수행 된다. 중요한점은 ECX는 값을 감소시키면서 카운트를 센다는 점이다. 예: count = 0 While count < 10: Print “Loop num : %d” % count Count+=1에서 위 코드를 어셈으로 변환해보면 카운트 값을 나타내는..
2015.03.04





왼쪽에 게이트웨이의 IP를 선택을 하고 오른쪽에 목표PC의 IP를 설정해준다. (반대일수도 있다..?기억이 잘안나네)




'Hacking > Network Hacking' 카테고리의 다른 글

WiFi Crack - WPA  (0) 2015.08.24
WiFi Crack - WEP  (0) 2015.08.24
네트워크 해킹 순서 참고 사이트  (0) 2015.08.20
Netcat Reverse Shell  (0) 2015.08.15

MsgBox.dll

Kail-KM
|2015. 3. 22. 22:24

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

getaddr.c  (0) 2015.05.06
EggShell.c  (0) 2015.05.06
Make Simple AutoRun  (0) 2015.02.26
Make Simple Bat File  (0) 2015.02.26
C언어 요약정리  (0) 2015.01.10

PE파일이 메모리에 로딩되었을 떄 각 섹션에서 메모리의 주소와 파일 옵셋을 매핑하여보자.

위의 사진은 리버스코어 블로그에서 퍼온 것으로 메모리에서는 VA로 위치를 표한하며 파일에서는 Offset으로 위치를 표현하는데

그림과 같이 파일에서와 메모리에서의 위치가 차이가 나는 것을 확인할수가 있다. 그렇기에 메모리에서의 값을 확인한 후에 수정을 하고자 할때에는 직접 그 위치의 Offset 값을 구하여 찾아 가야한다. ( 물론 PEView 를 통해 편하게 할수도 있다.)

RAW = RVA - VirtualAddress + PointerToRawData


RAW = 파일에서의 주소

RVA = 메모리에서의 주소

VirtualAddress = 메모리에서의 섹션 시작 위치

PointerToRawData = 파일에서의 섹션 시작 위치


우선 RVA - VirtualAddress를 통하여 메모리에서의 해당 주소가 섹션 시작 위치로 부터 몇번쨰 순서에 있는지를 알기 위함이다. 이를 통하여 메모리에서의 몇번쨰 순서인지를 알게된후에 파일에서의 섹션 시작위치 값을 더해준다면 파일에서의 섹션시작위치 + 순서값 = 을 통하여 파일에서의 주소를  알수가 있다. 이를 통해 다른 블로그의 RVA to RAW를 본다면 훨씬 이해가 쉬울것이라 혼자 생각한다.


'Reversing > Theory' 카테고리의 다른 글

Practical Malware Analysis - 1  (0) 2015.07.31
x86 Instruction Set Reference  (0) 2015.07.29
범용 CPU 레지스터  (1) 2015.03.04
Assembly Basic Commands  (0) 2015.01.23
PE File Format 0x04  (0) 2015.01.13

DDR_guard

Kail-KM
|2015. 3. 13. 22:53


ddrguard.exe

vb6ko.dll


vb6k0.dll 을 x86이면 C:\Windoes\system(x86)에 넣은후 속성에 들어가 차단해제를 설정해야함

64bit의 경우 systemwow64  에 넣은후에 설정을 해야한다.

'Hacking > Etc' 카테고리의 다른 글

Reg_시작프로그램 확인  (1) 2015.08.06
눈치코치  (1) 2015.03.13

눈치코치

Kail-KM
|2015. 3. 13. 22:31

실행중 프로그램 감추기


#원리가 뭐일까


nunchi2.9.5.zip


'Hacking > Etc' 카테고리의 다른 글

Reg_시작프로그램 확인  (1) 2015.08.06
DDR_guard  (1) 2015.03.13

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



범용CPU레지스터

EAX : 산술 연산을 수행하기 위해 사용되거나 함수의 리턴 값을 전달하기 위해 사용된다.


EDX : 데이터 레지스터로 기본적으로 EAX 레지스터의 확장 개념으로 사용된다. 즉 곱하기나 나누기 같이 복잡한 연산을 위해 추가적으로 데이터를 저장할 때 사용된다. 또한 범용 목적의 저장소로도 사용이 된다.


ECX : 카운터 레지스터라 불리며, 반복적으로 수행되는 연산에 주로 사용된다. 반복 연산에서는 문자열을 저장하거나 카운트를 세는 작업이 수행 된다. 중요한점은 ECX는 값을 감소시키면서 카운트를 센다는 점이다.

           : count = 0

           While count < 10:

           Print “Loop num : %d” % count

           Count+=1

에서 위 코드를 어셈으로 변환해보면 카운트 값을 나타내는 ECX의 값이 첫번째 반복 연산을 수수행할 때 10이고, 두번째에는 9로 감소한다는 것을 알수 있다.


ESI : EDI와 같이 데이터를 처리하는 반복문에서 효과적으로 데이터를 처리하기 위해 사용된다. ESI는 데이터 연산을 위한 Source Index를 나타내거나 입력 데이터 스트림의 위치를 나타낸다.

EDI : 데이터 연산의 Destination index(목적지)를 나타내거나 데이터 연산의 결과가 저장 되는 위치를 나타내는데 사용된다. ESI는 읽기위해 사용되고 EDI는 쓰기 위해 사용된다고 생각하면 된다.


ESP : Stack pointerEBP와 함께 함수 호출과 스택연산에 쓰인다. 힘수기 호출 될 때 먼저 함수에 전달되는 파라미터가 스택에 PUSH되고 그 다음에는 리턴 주소가 스택에 PUSH된다. ESP 레지스터는 스택의 가장 높은 주소를 가리킨다. 따라서 함수 호출시 ESP 레지스터는 리턴 주소를 가리킨다.

EBP : Base pointer, EBP 레지스터는 호출 스택의 가장 낮은 위치를 가리키는데 사용된다.


EBX : 특정한 목적이 없는 레지스터로 추가적인 저장소로 이 레지스터를 사용한다.

EIP : 현재 실행 중인 명령의 주소를 가리킨다. CPU가 바이너리 코드를 실행시킴에 따라 EIP 레지스터는 CPU가 현재 어느 코드를 실행중인지 나타내기 위해 계속적으로 코드의 주소를 갱신한다.

'Reversing > Theory' 카테고리의 다른 글

x86 Instruction Set Reference  (0) 2015.07.29
RVA to RAW 쉽게 생각해보기  (1) 2015.03.20
Assembly Basic Commands  (0) 2015.01.23
PE File Format 0x04  (0) 2015.01.13
IDA PRO 단축키  (0) 2015.01.13