2018-12-19
TLS Callback 함수
(TLS : Thread Load Storage): TLS초기화 코드 실행 기획
[ 안티디버깅 소스 ]
[ Immunity Debugger로 읽을수 없음 /디버깅이 불가능함 ]
따라서, 우회하기
->PEView로 읽어보기
[ PEView ]
Image Base + TLS Table(RVA) = TLS Table이 있는 주소(VA)
[ callback의 주소확인(00402198)과 비슷한곳 확인 ]
[ Immunity debugger ]
디버깅 옵션을 변경
[ data값은 ???.. 주소로 검색, 00401000으로 읽기 ]
[ 메인함수이동구간 수정해서 우회 ]
함수시작하는 부분 찾아가서 main함수부분을 binary->fill with nops
[ 우회성공 ]
Packer : Installer(실행압축)
[game.exe+game.inf+knife+dll]--[압축]--->[압축파일+압축해제코드+설치코드]=setup.exe
; 실행파일이 스스로 실행파일의 압축을 풀고 실행 //소프트웨어 배포
; packer종류 -UPX, ASPack, Armandilo
환경 : upx-3.95-win32
[ 압축 ]
[ PEiD - 압축한 파일을 읽을 수 있음 ]
[ 위의 소스코드를 리버싱해서 packer인지 확인해보기]
Realese-upx, packer -> Immunity debugger로 리버싱해보기
[ UPX0 , UPX1 ]
압축한 파일을 푸는 코드
=>이게 확인되면 unpacking 하면 됨
(MUP: Manual Unpacking)
[ PUSHAD ]
모든 Register를 차례대로 Stack에 PUSH (==PUSH ALL)
<-> POPAD : 차례대로 Stack에서 POP(꺼내오기)
00407000 : UPX1의 시작주소 : ESI
00401000 : UPX0의 시작주소 : EDI
[ ADC(ADD CARRY) ]
덧셈이지만 음수값이 나올수 있다라는 의미 ex.(-1)+(-1)=-2
Protector
(실행파일을 만들어 Protector을 돌리면 코드가 뒤죽박죽)
- 코드난독화, 코드 암호화, 안티 디버깅
- 종류: ASProtect, Themida
- 코드난독화
"문자열"-->분리저장+실행직전에결합=>실행
[ 소스설정 ]
No comments:
Post a Comment