본문 바로가기

pushad assembly 레지스터 값들을 스택에 쫙 백업한다. push 명령어는 pop 명령어와 짝궁이듯, pushad 명령어는 popad와 짝궁이다. pushad 명령어로 백업되는 레지스터들의 순서는 다음과 같다. EAX -> ECX -> EDX -> EBX -> ESP -> EBP -> ESI -> EDI 즉 pushad를 하고 디버거에서 보는 스택 상황을 보면 아래와 같다. (스택 주소는 High->Low로 신장한다. 하지만 보통 디버거창을 보면 High주소를 아래로 두므로 많이들 헷갈려 하는듯) (Low) EDI ESI EBP ESP EBX EDX ECX EAX (High)
Firmadyne 최종 Qemu 실행문 해석 [run.sh 파일 내 최종 qemu 실행문] ${QEMU} -m 256 -M ${QEMU_MACHINE} -kernel ${KERNEL} -drive if=ide,format=raw,file=${IMAGE} -append "root=${QEMU_ROOTFS} console=ttyS0 nandsim.parts=64,64,64,64,64,64,64,64,64,64 rdinit=/firmadyne/preInit.sh rw debug ignore_loglevel print-fatal-signals=1 user_debug=31 firmadyne.syscall=0" -nographic -net nic,vlan=0 -net socket,vlan=0,listen=:2000 -net nic,vlan=0 -net tap..
shellscript source 명령어 source [-h] filename filename 안의 명령어를 읽는다. 현재 쉘의 환경변수가 재설정 된다. 파일을 source 명령어로 실행시키면 해당 파일에 설정된 모든 변수들이 현재 쉘의 일부가 된다. source .bash_profile . .bash_profile ---------------------------------------------------------------------- source 명령은 bash의 내부 명령어입니다. 즉, 명령어가 따로 존재하는 것이 아니라, bash에 포함되어 있는 명령어이기 때문에 bash 쉘이 작동중일 때만 동작합니다. 만약 다른 쉘을 사용하시면 사용 불가능 합니다. 그리고 source 명령어 대신 . 을 사용하셔도 같은 역할을 합니다. source..
[오류] /bin/sh 실행 시 "no such file or directory" [오류] /bin/sh 실행 시 "no such file or directory" 나는 지금 Qemu에 firmware를 올려놓고 fimware RootFS의 root path를 새로운 root 경로로 chroot 한 상태이다. 여기서 펌웨어에 있는 /bin/sh를 실행시키려 하는데, 분명히 파일이 존재함에도 "no such file or directory"라는 문구가 뜬다. 왜? 이 진짜 의미는 "내가 지금 얘를 실행시킬 수가 없어, 뭔가가 없잖아!" 라는 뜻이다. library dependency를 충족시켜주자. ldd /bin/bash : 의존성 라이브러리를 확인. mount -o bind : 의존성 띄는 라이브러리가 있는 폴더를 마운트 시켜도 됨. (chroot가 아닌 원본에는 라이브러리가 있을테..
[MFC] 버튼클릭으로 탭 전환하기 + 상단 탭 목록 잠그기 [MFC] 버튼클릭으로 탭 전환하기 [메인다이얼로그] 1. 탭 컨트롤 변수 선언 (m_KingTab) 2. 각각의 탭 컨트롤 변수 선언 (m_tab1, m_tab2, ... ) 3. 탭 연동 4. 현재 탭 저장할 탭 포인터 변수 선언 (m_pwndShow) 탭 입장에선 부모는 tab control이고 한번 더 부모를 타면 MainDlg 일 것이다. 버튼이 있는 탭에서 버튼에 대한 함수를 아래와 같이 정의한다. void Tab1::OnBnClickedButtonNext() { //TODO: Add your control notification handler code here //tab1의 부모는 tabControl임. 한번 더 부모를 가져와야 CYourMainDlg. CYourMainDlg* pMainDl..
Pix <-> cv::Mat convert Pix *mat8ToPix(cv::Mat *mat8) { Pix *pixd = pixCreate(mat8->size().width, mat8->size().height, 8); for(int y=0; yrows; y++) { for(int x=0; xcols; x++) { pixSetPixel(pixd, x, y, (l_uint32) mat8->at(y,x)); } } return pixd; } cv::Mat pix8ToMat(Pix *pix8) { cv::Mat mat(cv::Size(pix8->w, pix8->h), CV_8UC1); uint32_t *line = pix8->data; for (uint32_t y = 0; y h; ++y) { for (uint32_t x = 0; x <..
Tesseract, Leptonica 설치 정리 Tesseract, Leptonica 설치 정리 1. Leptonica 빌드하기 Leptonica는 사실 그냥 편하게 GUI CMake 툴에 폴더만 지정하고 별다른 설정 없이 돌려도 빌드는 잘 된다. (하지만 내 프로젝트에 빌드한 lib, dll 포함시키고 막상 사용 시에 함수가 없다며 안돌아간다...!) build 경로는 output이 나올 경로를 지정하는 거라 본인 편한대로 지정하면 된다. 2. Tesseract 빌드하기 Tesseract는 Leptonica 경로만 설정해 주면 정상적으로 Configure-Generate가 가능하다. (Build는 조금 더 설정 필요함) Leptonica를 먼저 build한 후에 그 경로를 Leptonica_DIR에 적으면 된다. 나는 x64로 만들 거라 x64로 명..
Tesseract, Leptonica 컴파일 및 cmake로 opencv 포함시키기 출처 : https://answers.opencv.org/question/171470/opencv-ocrtesseractcreate-v305/ opencv OCRTesseract::create v3.05 - OpenCV Q&A Forum opencv OCRTesseract::create v3.05 edit I have the version of tesseract 3.05 and opencv3.2 installed and tested. But when I tried the end-to-end-recognition demo code, I discovered that tesseract was not found using OCRTesseract::create and checked the docu answers...