묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 되새기는 C 프로그래밍
overrun 예시 문제에 대한 질문있습니다.
강사님 강의 OVERRUN 예제를 보며 똑같이 해보려고 하는데 overrun 경고를 잡고 실행을 중단한것으로 판단됩니다.무시하고 실행하는 방법이 있을까요?
-
해결됨독하게 되새기는 C 프로그래밍
ShellCodeSample03.c에 대하여 질문이 있습니다.
안녕하세요 선생님 질문이 있습니다.Sample03에는 WinExec , exit이 주석처리되어 있어서 선생님이 추가적으로 언급하신 함수의 주소 문제가 아닌것 같은데 '05_ShellCodeSample03.exe'(Win32): 'C:\Windows\SysWOW64\ucrtbased.dll'을(를) 로드했습니다. 0x298c 스레드가 종료되었습니다(코드: 0 (0x0)). 예외 발생(0xFFFFFFFF, 05_ShellCodeSample03.exe): 0xC0000005: 0xFFFFFFFF 위치를 실행하는 동안 액세스 위반이 발생했습니다..이런 에러가 떠서 기계어 숫자가 틀렸나 해서보니 밑줄에서 한 4개정도 가 달라서 수정하였더니 동작하였습니다.#include <Windows.h> void main() { char shellcode[] = "\x55\x8B\xEC\x83\xEC\x48" "\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6" "\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45" "\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1" "\x00\x70\x41\x00\xFF\xD0\x6A\x01\xA1" "\xC0\x70\x41\x00\xFF\xD0"; char myshellcode[] = "\x55\x8B\xEC\x83\xEC\x48" "\xC6\x45\xF4\x63\xC6\x45\xF5\x61\xC6" "\x45\xF6\x6C\xC6\x45\xF7\x63\xC6\x45" "\xF8\x00\x6A\x01\x8D\x45\xF4\x50\xA1" "\x00\xb0\xba\x00\xFF\xD0\x6A\x01\xA1" "\x4C\xB1\xBA\x00\xFF\xD0"; // WinExec("", 0); // exit(0); //int *pShell = (int*)shellcode; int* pShell = (int*)myshellcode; __asm { jmp pShell } }해당 원인도 프로그램이 실행할때마다 ASLR 때문인것인가요? 궁금합니다
-
해결됨독하게 되새기는 C 프로그래밍
함수포인터기본문법 8:21초 질문입니다.
안녕하세요 선생님 질문이 있습니다.저의 경우에 디스어셈블리(release 64)로 확인한 결과int main() { 00007FF64DD11070 sub rsp,28h int (*pfAdd)(int, int) = add; result = pfAdd(3, 4); printf("Result %d\n", result); 00007FF64DD11074 mov edx,7 00007FF64DD11079 mov dword ptr [result (07FF64DD13638h)],7 00007FF64DD11083 lea rcx,[string "Result %d\n" (07FF64DD12250h)] 00007FF64DD1108A call printf (07FF64DD11010h) return 0; 00007FF64DD1108F xor eax,eax }add (메모리주소) 부분이 없는데 12세대 cpu를 써서 이런 차이가 있는것인가요?
-
해결됨독하게 되새기는 C 프로그래밍
Stack frame 관련하여 질문 드립니다.
인터넷에 검색 했을때는 64bit에서 로컬 변수 주소 배치 방향이 32bit와 다른 것이 32bit, 64bit의 자체적인 특성이 아니라 컴파일러의 환경에 따라 달라진다고 하던데 어떤 것이 맞는지 궁금합니다.
-
해결됨독하게 되새기는 C 프로그래밍
C언어 부동소수점 오차 관련해서 실제 실무적으로 해결하셨던 방법이 있을까요?
안녕하세요. C언어로 개발을 하고 있는 왕초보 개발자입니다.최근 부동소수점 관련해서 문제에 직면하게 되어서 C언어 개발자 분들은 혹시 실무적으로 어떻게 해결하셨는지 궁금합니다.제가 맡은 프로그램은 예전에는 해당 값이 소수점이 발생할 일이 없어서 인지 부동소수점 문제점 까지 크게 고려하지 않고 작성된 것으로 보입니다. 그리고 이전 개발자들도 다 퇴사하여 없고 저 혼자 해당 프로그램을 맡아 주변에 물어볼 곳 없어 여기에 질문하게 되었습니다ㅠㅠ문제점에 대해 간단히 말씀 드리면... 두서없이 급하게 작성해서 코드와 문제점이 발생했던 숫자는 정확하지 않을 수 있습니다.double a,b,c,d;a = 17772.8;b = 2338.2;c = modf(a+b, &d);a+b값이 20111 가 나오거나 아니면 오차로 더 큰 수면 그나마 다행이겠지만...modf 함수를 사용하여 실수부만 사용하고 있습니다.실제로 합산 값을 찍어보니 부동소수점 문제가 발생해서 20110.99999999 값을 갖고 있어서소수 부분 제거 후 20110 의 값만 남게 되어서 값이 정확하지 않아 문제가 발생했습니다.관련해서 해결해보신분 ㅠㅠㅠㅠ 도움주시면 정말 감사하겠습니다.
-
해결됨독하게 되새기는 C 프로그래밍
정수와 Endian 그리고 2의 보수 15:05쯤 질문이있습니다.
안녕하세요 선생님 질문이 2개 있습니다. 1) 15:05쯤에"1byte의 메모리에 64bit 상수가 주소로 부여됩니다."라는 의미가단순히 저 메모리 창에서 메모리(1byte)에 대한 주소를 2^64 까지 부여할 수 있으니까 0x자릿수가 늘어난것이다.라고 이해하면 맞나요..? 2) 추가적으로 a의 타입을 float , double로 바꾸는 경우 전혀 다른 값이 들어가던데 gpt를 통해 검색하니Let's break down the hexadecimal representation "00 00 20 41" into binary and decode it: Convert each hexadecimal digit into its corresponding 4-bit binary representation: 0: 0000 2: 0010 0: 0000 4: 0100 1: 0001 Concatenate the binary representations: 000000000000001000000100000001 Split the binary representation into its components based on the IEEE 754 format: Sign bit (1 bit): 0 (positive value) Exponent bits (8 bits): 00000000 Mantissa bits (23 bits): 00000100000000100000001 Apply the IEEE 754 formula: Sign: 1^(0) = 1 (positive) Exponent: 2^(0) - 127 = -127 Mantissa: 1.00000100000000100000001 (binary) The final value is calculated as (1 + mantissa) * 2^(exponent): (1 + 1.00000100000000100000001) * 2^(-127) = 1.00000100000000100000001 * 2^(-127) = 1.00000100000000100000001 * 2^(-23) * 2^(-104) ≈ 10 Therefore, the hexadecimal representation "00 00 20 41" corresponds to the floating-point value 10 in C. 이런식으로 설명해줬는데 부동소수점 관련된이야기인것을 알겠는데 자세히 알아야 하나요...?
-
해결됨독하게 되새기는 C 프로그래밍
스택 오버플로우 관련 질문입니다.
섹션 3 두번째 강의를 보면 스택의 크기는 보통 1MB로 설정되어 있고, 이 크기를 컴파일러 설정에서 10MB로 바꾸는걸 보여주셨는데요. 이 보통 1MB라는 스택의 크기는 운영체제 수준에서 설정된 값이 아닌가요? 어떻게 단지 컴파일러에서 값을 변경한 결과 비정상 작동하던 프로그램이 정상 작동하는 것인지 잘 이해가 되지 않습니다. 운영체제가 실행파일을 봤을 때 스택의 크기가 1MB가 아니라 달리 설정되어 있다면 그에 맞춰 실행을 하는 것인가요?
-
해결됨독하게 되새기는 C 프로그래밍
부동소수점 비교
안녕하세요! 부동소수점 비교 관련 질문이 있습니다.그간 부동 소수점(float 및 double) 비교 시 아무 생각없이 썼는데요;; 표현 범위를 넘어갔을 때 숫자가 보장이 안되어서 == 연산 오류가 있는것은 이해 하였는데요두 수의 작고 큰지 (<,>)에 대한 비교에 대해서는 오차가 없는 것 인지 궁금합니다. 감사합니다!
-
해결됨독하게 되새기는 C 프로그래밍
파일 처리와 UI 분리 #2에서 동기화가 없어도 괜찮은건가요?
File I/O를 위한 thread를 생성했을 때 User Event 받는 thread가 같은 자원에 접근하는데 동기화 없이 진행해도 괜찮은건가요?
-
해결됨독하게 되새기는 C 프로그래밍
콘솔(CON)은 파일인가요? 디바이스인가요?
제목 그대로입니다~콘솔(CON)은 파일인가요? 디바이스인가요?설명 중간에는 파일이라 하시고, 끝 부분에는 디바이스라고 하셔서요아님 두 개가 같은 의미인가요??
-
해결됨독하게 되새기는 C 프로그래밍
파일 생성해서 쓰고 읽을 시, 쓰거나 읽을 내용은 메모리에 버퍼 되나요?
fopen 해서 파일을 읽게 되면, disk 상에서 File * 포인터 주소에서부터 순차적으로 연속된 메모리 배열로 존재하게 되는 것이고, 파일을 쓰게 되면 쓰는 내용들에 메모리 버퍼에 순차적으로 쌓이다가 fclose 하는 순간 disk 공간으로 flush 되는 건가요? 이때 커널의 i/o 드라이버와 HDD or SSD의 디스크 컨트롤러가 동작하는 구조인 것이고요?추가로, fclose 함수는 blocking 방식으로 동작하는 함수 인지 알고 싶습니다.
-
해결됨독하게 되새기는 C 프로그래밍
안녕하세요 강사님 보안 챕터의 쉘코드 부분을 인상깊게 봤어요.
gets 함수 취약점을 이용해서 쉘코드를 실행시키는 부분이 너무 인상적이어서 그 부분만 제가 방문하는 카페에 공유하고 싶은데 가능할까요?
-
해결됨독하게 되새기는 C 프로그래밍
함수호출규약 중에서 fastcall 관련 질문 드립니다!
fastcall이라는 규약이 메모리에 매개변수를 저장하는 것이 아니라, 레지스터 쪽에 매개변수를 저장해서, 메모리에 매개변수를 다시 저장할 필요가 없도록 만들기 때문에 속도가 빨라진다는 것으로 이해를 했습니다! 그런데, 제가 메모리를 찾아보니까 수업 중에서 예제로 드셨던 add 함수의 매개변수 param1, param2가 메모리에서 똑같이 잡혔는데, 이건 어떻게 이해하면 좋을까요? 디스어셈블리로 확인해보니까 ECX, EDX 레지스터에 각각 param값들이 저장이 잘 되는 것은 확인을 했는데, 상황이 그렇다면 fastcall인 경우 레지스터에만 값이 들어가면 될 것 같은데, 이게 똑같이 메모리에서 매개변수의 주소가 잡힌다는 것이 약간 의아합니다!
-
해결됨독하게 되새기는 C 프로그래밍
스택프레임구조 ..
32비트 구조에서스택프레임은 메모리주소가 낮은주소로 쌓이고0번지를 향해 증가하는데 ? 이유가 무엇인가요 ?네이버 검색상으로는 스택프레임이 커널영역을 침범하지 않게하기위해서 라고 하는데, 그글 댓글에서 커널영역을 침범하지 않기위해서라는 설명은 틀린설명이라고 하는데 정확한 이유가 궁금합니다.추가로 64비트 컴퓨터는 왜 32비트 구조랑 스택프레임구조가 왜 다른지궁금합니다.그냥 설계된것은 아닌거같아서요
-
해결됨독하게 되새기는 C 프로그래밍
쓰레드편을 보다가 궁금증이 생겨서 질문드립니당.
리눅스 환경에서 구조체내에 int a, b, c가 있고, 메인 영역에서 while상태로 함수1을 구조체로 포인터로 매개변수를 전달하여 함수 call을 하여 a,b에 접근하여 값을 바꿔준다 가정하고,쓰레드를 열고 그 쓰레드 내 while상태로 함수2를 똑같은 구조체 포인터로 매개변수를 전달하여 함수call하여 c의 값을 바꿔준다고 가정하면 혹시 레이스 컨디션이 일어나나요?...서로의 함수 1은 a,b, 2는 c만을 건들지만 궁금한 점은 구조체 전체의 값을 read하고 원하는 영역만 바꾸고 구조체 전체의 값을 write하게 된다면, 함수 1과 2의 레이스 컨디션이 일어나는건지 너무 궁금하네용.. 너무 두서없이 써서 죄송합니당..
-
해결됨독하게 되새기는 C 프로그래밍
강의중 노이즈가 끼는 부분이 있습니다.
매개변수 전달 기법 - 첫 번째 영상 14분 5초 즈음에 목소리에 노이즈가 끼어있습니다. 한번 확인해 주심 좋을거 같아요
-
해결됨독하게 되새기는 C 프로그래밍
버퍼
궁금한게 있어서 질문드립니다 ! 버퍼는 OS가 지정한 임의의 메모리 공간에 생기나요 ?아니면 프로세스의 가상메모리 공간에 생기나요 ?
-
해결됨독하게 되새기는 C 프로그래밍
강의 내용이 C++에도 동일하게 적용되는 내용일까요?
??
-
미해결
주피터 노트북 커널 죽음
주피터 노트북으로 GAN CNN 실습중입니다. 가상환경 설정 잘 해놔서 GAN 모델이 잘 돌아가서 데이터 생성 잘했는데요 어제 CNN모델 생성해보니깐 커널이 계속 죽더군요 문제를 해결해보려고 구글링해서 max_buffer_size도 바뀌봤고요 그래도 문제가 해결되지 않아서 조금 냅뒀다가 다시 실행해보니깐 또 돼서 메모리 문제인가 싶었습니다 문제는 CNN 모델을 실행이 되니깐 이제 GAN 모델을 또 다시 돌리려다 또 다시 커널이 죽어버렸어요 메모리를 초기화해주려고 다른 창 다 꺼서 용량 충분히 확보해줬는데도 잘 안되네요 그리고 RAM 용량이 16gb 짜리라 메모리 용량도 충분하다고 생각했는데 이상해요ㅠㅠㅠ 저 같이 주피터 노트북 커널 죽었을 때 해결법 아시는 분 계신가요?..
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
pandas-profiling과 wordcloud 설치 문제(5.도시공원 표준 데이터 활용)
밑의 사진과 같이 pandas-profiling이 설치가 안되는 것 같아요. you may need to restart the kernel to use updated packages. 계속 이런 에러 메세지가 뜨는데 해결방법은 무엇일까요? anaconda prompt로 들어가서 관리자 권한으로 실행해도 잘 안되네요.