AssemblyLearner
AssemblyLearner copied to clipboard
Issues remaining for 1.0
- [x] 회원 정보 수정 만들기
- [x] snippet을 문제 화면에 넣을 것인지 결정
- [x] 정답표시를 타임아웃 걸린 밑의 한줄짜리 글로 표현하기. 지금 보니까 조금 불편함..
- [ ] 답 검사를 파이썬 파일로 하기 (interactive judge)
- [ ] 문제 제작 시 이미지 업로드 지원하기
- [ ] Dockerfile 및 설치 스크립트 만들기
snippet을 include의 autocomplete로 넣자 Answer checker의 경우 지금 개인적으로 짜고있는 쉘코딩에서는 strace 기반으로 하고있는데, 이걸 이제 함수 단위로 만들어서 사용해도 되겠다.
validator에서 코드의 사이즈를 체크해도 될 것 같다. 이러면 validator, answer checker, suffix, hint, input, example을 입력해야하는데, 아무래도 입력해야되는게 엄청 많아지니까 화면이 점점 길어지는군.
answer checker concept:
# syscalls = [yields Syscall]
# program.<attr> = caller for a program.
# * NOTE: can segfault?
# * let's use ctypes-like caller and angr-like memory/register setter with appcalls concept
from random import getrandbits
for i in range(100):
input = getrandbits(16)
assert program.code(eax=input) * 2 + 1 == input * 2 + 1
# If not assertions and progrma returns normally, then great!
# another example:
found = False
for syscall in syscalls:
if syscall.no == 11 and memory.readstr(syscall.args[0]) == '/bin/sh' and valid_argv(syscall.args[1]) and valid_envp(syscall.args[2]):
found = True
break
assert found == True