빡대가리 새끼들아
내 해설 보고 포인터 제대로 이해해라 븅신들
(32비트 프로그램)
long long x = 0;
int* pint = (int*)&x;
*pint = 0x12345678;
unsigned int Address = (unsigned int)pint;
Address +=4;
char* pByte = (char*)Address;
char Result = *pByte;
1줄. 8바이트고 이름이 x인 정수 하나를 정의하고 0으로 초기화
2줄. pint 라는 4바이트 정수 포인터 변수가 x의 주소를 가리키도록 함
3줄. pint를 역참조 즉 변수 x에 0x12345678 값을 저장함
4줄. 4바이트 정수인 Address 를 정의하고 이 값에 pint의 값 즉 x의 주소를 포인터 변수에서 정수 변수로 캐스팅해서 넣어줌
--> 포인터는 주소값이고 32비트 프로그램에서 크기가 4바이트임
그러므로 4바이트 정수 Address에 정확히 주소가 저장될 수 있음
5줄. Address 에 4를 더한다. 이러면 주소가 4만큼 증가하므로 원래 가리키던 곳에서 4만큼 떨어진 곳을 가리킴
6줄. Address를 char*로 형변환해서 포인터 변수 pByte에 저장
7줄. pByte가 가리키는 곳에서 값을 읽어와 Result 변수에 저장
답은 16진수로 0x00 임
왜냐하면
long long 탑입인 x를 0 으로 초기화 했으니
16진수로 0x0000 0000 0000 0000 임
이 변수에 0x12345678을 저장함
근데 리틀엔디언이라서 값이 역으로 저장된다.
78 56 34 12 00 00 00 00 임
Address의 초기값은 78을 가리켰는데 여기에 4를 더하니
4만큼 더 간 0x00을 가리키게 됨
그래서 답이 0x00임
님처럼 c언어 잘하려면 어떻게해야함?
역으로 저장되는건 처음 알았네 ㄳ - dc App
세그폴트임
보안 프로그래밍 공부하면 됨. 이런 코드 수백 줄 = 보안
근데 왜 역으로 저장되는 것이지? 장점이 있나? - dc App
그게 cpu가 내부적으로 계산하기 더 좋다던데 자세히는 모름
아니 ㅋㅋ 기초 c나 c++책 하나면 풀 수 있는 문제를 뭐 대단하다는 듯이 해설까지 올리냐 ㅋㅋ
이게 보안프로그래밍을 배워야 알수있는거라 생각해??
너 이런거 최근에 안거지 ㅋㅋ?
Cpu가 리틀엔디안인지 확인하는 코드가 없는데 빅엔디안이면 어쩜?
해킹 아시는구나! 혹시 모르시는분들에 대해 설명해드립니다 리버싱이랑 시스템해킹랑 웹해킹의 세가지 중 시스템해킹의 최종보스로 진.짜.겁.나.어.렵.습.니.다
뭘 최근에 알어 븅신들아 ㅋㅋ 알면 답을 쓰지 그랬니 ㅋㅋ
C언어는 전부다 안나오고 디스어셈블리밖에 없는데 C언어는 어디에도 없고 완전 복잡합니다..
스택워킹//매뉴얼매핑//리턴 값 확인//후킹// 등등 포인터 존나게 쓰는 곳이 보안인데 ㅋㅋ
하지만 이러면 절대로 해킹을 할 수 가없으니 제작진이 치명적인 약점을 만들었죠. 바로 헥스레이로 디컴파일이 가능하다는 것입니다.
c언어 책만 읽어도 풀 수 있음
요즘 애들 코딩배우니까.. 중학생수준만되도 풀겟는데?
아이다프로를 켜고 에프5를 누르면 디컴파일이 되고 프로그램의 내부 구조가 다 보이게 됩니다.
인텔 cpu가 리틀엔디언을 사용하는데 ㅋㅋ
니가 몰라도 컴파일러가 알아서 처리해줌 병신아 엌ㅋㅋ
딱 이 수준인데?
와 샌즈!
근데 왜 못 품 원글에서 ㅋㅋ
내가 너한테 야 1에서 마이너스 1을 빼면 뭔지 아냐? 이러면 넌 상대하냐?
아이다 프로 ㅋㅋ 패킹 되어있는데 그거 그냥 연다고 보이겠니 병신아 ㅋ
그게 진정 상대할 가치가 있다 생각됨?
병슨아 그런 건 컴파일러가 알아서 처리해 준다니까?
프갤 고졸 지잡새끼들 원글에서 답 못 찾는 그지새끼들이 포인터 개념 알려주면 고마운 줄 알아야지 ㅉㅈ
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
라이젠은?
애초에 컴파일러 돌릴려면 컴파일러 자체도 빅엔디언 방식으로 돌아가야 되는 거 생각 못 하냐?
8바이트가 4바이트로 짤리고 4바이트가 2바이트로 짤리고... 그걸 왜이리 거창하게 얘기해..
cpu 아키텍처 신경쓰지 말라고 운영체제가 있는 건데 븅신년ㅇ ㅋㅋ
x86 x86-64는 다 리틀 엔디안임
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
야 1에서 마이너스 1을 빼면 뭔지 아냐? 모르면 짜.져.있.어. 고졸 지잡아
라이젠이나 인텔이나 명령어 집합 같은데..
네트워트 만질때 꼭 highbyte lowbyte써서 판명하고 시작했는데..
프갤 수준 완전 낮네 1에서 마이너스 1을 빼면 뭔지도 몰라 ㅋㅋㅋㅋㅋ
이게 해설을 십줄 넘어가면서 쓸정도 수준의 문제였어 ㅎ? 대단한거 알고와서 신났나보네 세세하게 알려주고
왜 아무도 답이 없냐? 모르냐 ? 어엌ㅋㅋ
이 형님이 꼭 1 -(-1)을 설명해 줘야겠어? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
c언어 처음배울때 메모리로 덧셈 뺄셈하는 장난 한번 쳐봤을때 알법한 문젠데 ㅎ
근데 이 문제는 리틀 엔디언 빅 엔디언 상관 없이 어차피 답은 0x00 이야
왜냐면 4를 더했으니까
그리고 코딩할때 당연히 일반 PC 기준 아님?
쓸대 없는 걸로 딴지 걸지 마라
게임만 쳐하는 애들도 아니고 뭔 인텔을 디폴트로 박아넣고 시작함?
이거 할줄 알면 삼성도 가고 엘지도 가는거죠?
스택포인터에대해 알아보면 리틀인디언을 이해할수있어요