https://d2.naver.com/helloworld/8786166
진행 중
- WebAssembly Studio: 온라인 IDE(integrated development environment)를 사용해 C와 Rust, AssemblyScript 등으로 WebAssembly 코드를 작성해 볼 수 있는 플레이그라운드 사이트이다.
- Extending the browser with WebAssembly: Alliance for Open Media의 AV1 비디오 코덱의 소스 코드를 감싸는 래퍼(wrapper)를 빌드해 브라우저에서 코덱을 실행할 수 있게 하는 과정을 소개하는 글이다.
- Emscripten and npm: 일반적인 웹 애플리케이션 프로젝트에 WebAssembly 모듈을 통합하기 위해 준비해야 하는 설정을 설명하는 글이다.
https://www.hahwul.com/2018/10/06/hacking-security-analysis-web-assembly/
https://www.wasm.com.cn/demo/Tanks/
https://github.com/WebAssembly/wabt/tree/master/wasm2c
웹어셈블리를 C언어로 변환해주는 툴
wasm2c test.wasm -o test.c 커맨드를 실행하면 test.c과 헤더 파일인 test.h가 발생
사실 test.c 자체도 문법적 오류가 없지만 (!), 웹어셈블리에서 import가 존재하는 경우 링커에서 unresolved reference 에러가 나게 됩니다.
해결법은 다행히 간단한데, 헤더에 있는 선언들이 공간을 갖도록 해주면 됩니다.
sed -i 's/^extern //g' test.h 그리고, 컴파일을 해줍니다. 단 C 생성을 위해 쓰인 여러 런타임 함수들이 구현되어있는 wasm2c/wasm-rt-impl.c 파일도 같이 컴파일해줍니다.
gcc test.c /wasm-rt-impl.c -o test --shared -fPIC 이러면 이제 디컴파일이 가능한 ELF 파일이 나옵니다, 웹어셈블리는 개발자 도구를 통해 디버깅 할 수 있습니다.
'웹' 카테고리의 다른 글
CORS (Cross Origin Resource Sharing) (0) | 2020.08.11 |
---|---|
DNS Rebinding 을 이용한 우회 (0) | 2020.08.10 |
Oauth 개념과 원리 (0) | 2020.08.09 |
SSRF Types And Ways To Exploit It (Part-1) (0) | 2020.08.09 |
JSP SQL 인젝션 대응방안 (0) | 2020.08.08 |