본문 바로가기

개발 및 운영/프로그래밍32

C++ & AFX(MFC) 환경에서 사용자 정의 메세지 사용하면서 SendMessage으로 메세지 호출할 때 Run-Time Check Failure C++ & AFX(MFC) 환경에서 사용자 정의 메세지 사용하면서 SendMessage으로 메세지 호출할 떄... Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.위와 같은 오류가 났던 경우가 있었습니다. 이틀동안 엄청 삽질했는데... 보통 이런경우 메모리가 꼬여서 (Overflow/일부 메모리 free등) 문제가 발생했.. 2019. 6. 27.
안전한 IOCP 프로그래밍 GQCS = GetQueuedCompletionStatus 비동기 처리 함수들 (WSARecv, WSASend, WriteFile, ReadFile 등) 비동기 처리 개수만큼 GQCS 결과 발생 GQCS의 return이 FALSE일 경우에도 key 및 lpOverlapped가 NULL이 아닌 경우에는 해당 이벤트에 대한 처리가 필요함 (이런 경우에는 해당 핸들에 오류가 발생한 것으로 GetLastError으로 오류결과 받을 수 있고 해당 핸들에 대한 정리(Cleanup) 처리 등이 필요) PostQueuedCompletionStatus로 비동기 처리에 대한 대체결과 Post가능 (이 경우 기존 작업 취소됨(?)) 예를 들어 비동기 WSARecv받는 중에 closesocket하면 GQCS의 return값이.. 2019. 6. 23.
OpenSSL FIPS 빌드 저의 빌드 환경은 Windows x86 64bit , Visual Studio 2015 환경입니다. 그리고 필요한 프로그램들은 (대략) 아래와 같습니다. (더 필요할 수 있음) nasm (32bit/64bit 둘 다 따로 설치) ActivePerl D:\replace.bat (아래) @echo ON setlocal call :FindReplace %1 %2 %3 exit /b :FindReplace set tmp="%temp%\tmp.txt" If not exist %temp%\_.vbs call :MakeReplace for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do ( for /f "usebackq" %%b in (`Findstr /mi.. 2019. 6. 19.
WindowsPE에서 디버깅하기 WindowsPE에서 cmd을 켜고 크래시 덤프를 만들기 위해 procdump을 사용하면 작동하지 않고 그냥 꺼져버립니다..그 이유는 explorer에서 procdump을 실행해보면 이유를 알 수 있습니다. explorer실행방법 : cmd에서 notepad열기 -> 파일열기 -> 모든파일 -> exe우클릭 실행! 그럼 pdh.dll이 없다고 나오는데 C:\Windows\System32\pdh.dll을 procdump와 같은 위치에 넣어주면 작동합니다! 2018. 11. 7.
libcef 멈춰버리는 문제 해결 libcef을 사용하던 중...화면을 드래그하거나 특정 작업을 하거나 아니면 그냥... 멈춰버려서 뻗어버리는 경우가 있었습니다.메인스레드는 CPU을 11%정도를 계속 소비하면서... 이런 상황에 제 프로그램은 이런 구조였습니다. main()while(GetMessage(NULL, &msg, NULL, NULL)){TranslateMessage(&msg);DispatchMessage(&msg);} CEF초기화 부분cefSettings.multi_threaded_message_loop = 1; //needed for MFC projects (unless we want to implement custom message-loop)cefSettings.single_process = 1;CefInitialize(c.. 2018. 7. 2.
CodeVirtualizer 주의점 #1 CodeVirtualizer을 한국에서 사용하는 사람들이 별로 없는거 같네요.. 제가 사용해 보면서 겪고있는 일들을 기록합니다.. 1. 중첩 Virtualizer 금지VIRTUALIZER_START....VIRTUALIZER_FISH_WHITE_START....VIRTUALIZER_FISH_WHITE_END....VIRTUALIZER_END 이런 식도 그렇고 void function(){VIRTUALIZER_START...VIRTUALIZER_END} int main(){VIRTUALIZER_START...function();...VIRTUALIZER_END} 이런것도 그렇고 중첩해서 VIRTUALIZER을 하면 CodeVirtualizer프로그램이 Protect적용중에 죽던지 프로그램이 죽던지 합니다... 2017. 12. 26.
반응형