본문 바로가기
Delphi 예제 자료

Refletive Injection DLL쪽 C 언어 소스를 델파이 번역 (소소한 강의)

by kimsyo11 2022. 1. 5.
728x90

Refletive Injection C언어 소스를 보고 이해 안되는 부분은 이론을 보고 참고하여 이해한뒤

델파이 파스칼 언어 코드를 작성했습니다 또는 C에서 지원되는 함수가 있고 델파이에는 없어서

어셈블리어로 돌려 반환해서 처리와 그다음 Hash 구하는것 까지 코드 작성했습니다

아래의 사진 보시면 인젝당한 DLL이 타 프로세스에 모듈 몇번 찾는 도중에

Kernel32.dll의 메인 base 주소를 이동하는것을 볼수가 있습니다

 

해당 인젝 당할 타 프로세서 exe를 열어보면 필요한 VirtualAlloc 함수가 Kernel32.dll에 있는것을 알수가 있습니다

모든 프로세서가 기본으로 Kernel32.dll을 보유하고 있습니다 우린 이 해당 Kernel32.dll 베이스 값과 Kernel32.dll의

내부 함수를 구해야 합니다.

해당 아래의 자료를 보면 첫번째 로드가 자기자신 프로세서 두번째는 ntdll.dll 이고 세번째는 Kernel32.dll 확인이 됩니다 그래서 프로그래밍으로 코딩을 짜보고 해당 좌표 첫뻔째 로드된 곳을 가봅니다

 

자 보시면 첫번째 로드 될때 자기자신 프로세서 라고 했습니다 Project1.exe로 보입니다

해당 50 00 72 00 6F 00 6A 00 65 00 63 00 74 00 31 00 2E 00 65 00 78 00 65 00 은

Unicode로 되어 있는것이라고 보면됩니다

그래서 아래 사진으로 보면 순서에 맞게

1. 자기자신 프로세서

2. ntdll.dll

3. KERNEL32.dll

이 나오는것을 볼수가 있습니다.

 

그럼 C 언어에서 DLL 소스 봅시다

사진속의 1번을 봅시다

(DWORD)uiValueC가 해쉬값을 연산하여 해당 KERNEL32DLL_HASH값이 맞으면 진행하고 있습니다

KERNEL32DLL_HASH값은 0x6A4ABC5B이기에

(DWORD)uiValueC 값이 0x6A4ABC5B 이라면 넘어갑니다

그렇게해서 1번과 2번 사이의 과정을 통해 2번으로 넘어갔다고 봅시다

2번과 3번 4번 각 Kernel32.dll의 내부 함수에 각 함수 주소를 부여 합니다.

아래 처럼 그렇게 4개의 함수 각각 주소를 부여하여 다 들어가 있으면

break문에서 만나 반복문을 종료하게 됩니다 이제 내부 함수를 사용할수 있게 되었습니다

아래 처럼 주소 부여 당한 pVirtualAlloc 사용 즉 VirtualAlloc사용 되고 있는것을 볼수 있습니다

그럼 델파이로 아래처럼 제가 짠 DLL 소스 일부 코드 참고 해봅시다

참고로 이 아래 코드 그대로 쳐도 사용이 불가능합니다

최대한 C언어 비슷하게 별도로 함수를 만들어서 사용했기 때문입니다

그럼 pVirtualAlloc가 VirtualAlloc 함수 역활이 잘 됬는지 봐야겠지요?

그럼 Refletive 로더에서 타 프로세서 인젝당한 DLL 내부 함수에서 pVirtualAlloc함수가 잘 동작이 되어

097C0000 주소가 부여 되는것을 볼수가 있습니다

본래 같으면 DLL 인젝 당한 프로세서가 DLL Main 구하기 전에 바로 VirtualAlloc 호출하면 프로그램 강제 종료 발생하지만 DLL Main 구하기 전에 VirtualAlloc의 주소를 부여 했기에 정상적으로 잘 동작이 되며 강제 종료가 안되는것을

알수가 있습니다

이상 짧은 강의 였습니다.

DLL 소스 이만큼 작성 했지만 아직 미완성 입니다

시간 분활해서 짜고 있네요 순수 타이핑으로 짜고 있기에 ㅠㅜ

 

 

위는 과거 작업했던 내용이며 완성본은 아래의 링크에 있습니다

 

https://kswit.tistory.com/1

 

델파이(delphi) Refletive Dll Injection + Loader

아래 C++언어를 본인이 직접 델파이 파스칼로 해둔것이니 참고하셔서 공부 하시길 바랍니다 ​https://github.com/stephenfewer/ReflectiveDLLInjection GitHub - stephenfewer/ReflectiveDLLInjection: Reflectiv..

kswit.tistory.com

 

728x90

댓글