- 444
- 4 056 608
스무디 TV
South Korea
Приєднався 15 чер 2014
불법적인 내용은 다루지 않으며, 불법 가능성이 있는 사항은 임의로 삭제 될 수 있습니다.
Відео
리버싱 - 1.맛보기
Переглядів 11 тис.6 років тому
190120 / 리버싱이란? abexcm1 : drive.google.com/file/d/1OxCsqzFGdrUcJIHvStNDXGxsSgydwzXE/view?usp=drivesdk
[스무디] C언어 라이브러리 16. setvbuf
Переглядів 6 тис.8 років тому
160302 / C언어 표준 라이브러리 함수인 setvbuf에 대해서 설명합니다.
[스무디] C언어 프로그래밍 2. 첫번째 주제 - 지뢰찾기
Переглядів 13 тис.8 років тому
160302 / C언어로 프로그래밍을 해볼 첫번째 주제를 선정했습니다.
[스무디] 어셈블리어 81. AAA - ASCII 문자열 덧셈.
Переглядів 3,1 тис.8 років тому
160212 / AAA명령어를 이용하여 숫자로 구성된 두개의 ASCII 문자열을 더하는 코드를 설명합니다.
[스무디] Win32API 10.유니코드 프로그래밍
Переглядів 3,9 тис.8 років тому
160212 / Win32API에서 유니코드 환경으로 프로그래밍 하는 것에 대해서 설명합니다.
[스무디] Win32API 8. Visual Studio 기본&디버거 사용법
Переглядів 4,3 тис.8 років тому
160212 / Win32API를 본격적으로 시작하기 전에, visual studio의 사용법을 설명합니다.
[스무디] Win32API 9. Visual Studio 미리컴파일된 헤더
Переглядів 2,3 тис.8 років тому
160212 / Visual Studio의 "미리컴파일된 헤더" 기능을 설명합니다.
[스무디] Win32API 5. MessageBox 를 사용한 hello world 예제.
Переглядів 6 тис.9 років тому
[스무디] Win32API 5. MessageBox 를 사용한 hello world 예제.
[스무디] C언어 라이브러리 41. errno, strerror
Переглядів 1,3 тис.9 років тому
[스무디] C언어 라이브러리 41. errno, strerror
핸들 바꾸신거 보면 살아계시긴 하나보네요
초등학교 5학년때부터 해킹에 동경을 품고 맨땅헤딩을 하면서 막연한 상황일때 굉장히 선생님의 영상이 도움이 많이 돼었습니다 xcoin이 즐겨찾기에 되어있는걸로 보아 창창한 앞길로 가시는거 같아 정말 기쁩니다 간단한 칼리리눅스 툴 강의에도 쉽고 정확한 설명과 비유를 들어주시던게 너무 도움이 많이 돼었습니다 결과적으로 과는 말씀드릴 수 없지만 인서울 관련 학과로 갈 수 있었고 많은 도움을 받은거 같아 인사드려요 나중에라도 근황 알 수 있으면 좋겠네요 😢
아니 어디갔어여 님, 나는 덕분에 컴공갔다왔다고;; 스무디님 아니었음 지금 제가 뭘하고 있었을지 몰라요..
이거 삭제 어떻게 하나요
덕분에 감사히 잘 봤습니다. 어셈블리어를 이렇게 까지 알려주시는 영상강의는 없었는데 덕분에 잘 공부하고 갑니다.
정말 알기 쉽게 설명해 주셨습니다, 감사합니다. 조금 더 궁금한게 있는데요, 그럼 보통 C 드라이브는 할당크기를 얼마에 놓고 쓰시나요? 그리고 C 말고 다른 드라이브는요? 영상을 주로 저장할 USB를 샀는데 이건 어느정도 할당크기를 해야 할까요? 설명은 잘 들었는데, 경험이 없어 감을 잡을 수 없습니다 대략적인 가이드라인 좀부탁해도 될까요?
캐리 EBS 모여라 딩동댕 이용신 정유미 이혜빈
지금 보고 있는 사람 추천 스무디님 다시 활동해주세요 스무디님 영상 처음 볼때가 초등학생 이였는데 어느덧 군대도 다녀온 성인이 되었습니다
온라인초커게임같은것도 되나요?
선생님 도움 많이 받고 있습니다! 근황이라도 올려주시면 열심히 보겠습니다. 그럼 마저 배우러 가겠습니다.
내 컴퓨터로 은행에서 은행 업무차 원격조종을 했었는데 그 후로 컴퓨터를 켜면 늘 인터넷 신용지키미 또는 사용자를 누군가가 추적하고 있다는 창이 뜹니다 이거 원격 조정 때문에 그럴까요? 별다른 일은 없을까요? 그리고 아들녀석에게 구글 내 아이디와 비번을 알려줬고 그후로 구글 비번은 바꿨습니다
요즘 잘 지내시나요?
.c.o : 뒤에 아무것도 지정안했는데 $< 이 명령어가 어떻게 작동 되나요?
감사합니다 ^^ 리버싱 공부하는데, 각각 용어들 잘 설명해 주셔서 감사해요~~~
근황좀 올려줘요 형 ㅠㅠ 형 동영상 보면서 어릴때 따라해보고 흥미 느껴 어느덧 대학원 진학을 앞두고 있네요 보고싶어요!!
혹시나 이해 못하신 분들을 위해 맞는 지 모르겠지만 제가 이해한 대로 끄적여 봅니다. 중첩 시 기존 프레임 포인터를 저장하고 새로운 프레임 포인터가 만들어질 때, 왜 기존에 있던 또 다른 프레임 포인터를 추가로 스택에 넣어두는 지(추가로 생성되는 지)에 대해서 설명이 없어서 이걸 굳이 왜 넣어 주는거지?? 하고 한참 쳐다보고 있었습니다. 왜냐면 이전 포인터로 되돌아가는데 새로운 프레임만들면서 저장한 기존 프레임 포인터만 참조해서 들어가도 얼마든지 이전 프레임으로 되돌아 갈 수 있잖아요. 예를 들어, Enter로 새로운 중첩 프레임을 만들었을 때 1. mov ebx, [ebp]; // 저장된 프레임 포인터를 불러와서 ebx에 저장 (바로 직전 프레임 포인터를 저장) 2. mov ebx, [ebx]; // 추가로 더 이전의 프레임 포인터를 얻고 싶을 때 반복 수행 1번 코드로 직전 프레임 포인터를 얻을 수 있고, 더 이전의 프레임 포인터를 얻고 싶을 때 2번 코드만 반복 실행해도 계속해서 그 이전 포인터를 얻을 수 있습니다. (1번 코드를 먼저 실행하는 이유는 ebp를 훼손하면 안되기 때문임을 아실거라 생각합니다.) 예를 들어, 강의의 예제에서 2번 중첩 프레임이 진행 된 Enter 4,2에서는 int a값에 접근하기 위한 프레임 포인터는 1번 코드 실행 후 2번 코드를 한 번만 실행하면 얻을 수 있고, 10번 중첩됬다고 가정할 경우 (Enter 4,10 상태에서) 1번 코드를 실행 후 2번 코드를 9번 실행하면 가장 바깥의 a에 접근할 수 있겠군요. (가장 바깥의 변수 a에 접근하기 위해서 n-1 만큼 2번 코드를 실행) 따라서, 몇 번 중첩됬는 지와 어떤 단계에 존재하는 변수인지만 알면 이전 포인터 구하는 것은 쉽습니다. 하지만, 이 방식은 중첩이 진행 될수록 굉장한 비효율성이 발생하게 됩니다. 원하는 바깥 프레임 포인터로 돌아가기 위해서 10번 중첩된 경우 단순히 a만 건드리기 위해 1번 코드 실행 후 , 2번 코드를 9번 실행해야 a를 건드릴 수 있을 것이며, 다시 b를 건드리기 위해 1번 코드를 실행 후, 2번 코드를 8번 실행해야 b를 건드릴 수 있겠네요. 데이터 하나 건드릴려고 하면 무시무시한 반복을 진행해야 하니까 그것을 두줄로 처리해버리는? 효율이 이 강의의 핵심이 아닐까 싶네요. 스택에다가 미리 원하는 외부 프레임 포인터로 돌아갈 수 있는 프레임 포인터를 계산해서 넣어둠으로 인해서 (정확히는 해당 프레임으로 갈 수 있는 포인터가 위치한 포인터 - 이전 으로 돌아갈 수 있는 포인터의 주소 값 혹은 이중 포인터) 단 두줄의 코드로 내가 원하는 단계의 외부 프레임에 접근 가능합니다. 중첩 프레임이 만들어 질 때, 가장 바깥에 (최외각? Level 0 단계?) 접근할 수 있는 프레임 포인터 순서로 ebp-4에 만들어집니다. 즉, 10번이 중첩되었든 100번이 중첩되었든 가장 외부의 a를 수정하려면 ebp-4를 참조하면 됩니다. 1. mov ebx, [ebp-4] // ebp-4에 들어있는 값을 저장 (포인터 저장) 2. mov ebx, [ebx] // 해당 포인터를 참조해서 한 번 더 값을 가져오면 a에 접근 가능한 프레임 포인터를 얻습니다. 그렇다면, b를 수정하기 위해서는 중첩횟수, 중첩 위치와 상관없이 1. mov ebx, [ebp-8] 2. mov ebx, [ebx] 이런식으로 접근하면 됩니다. 잘 관찰해보면 중첩 프레임이 만들어질 때마다 ebp-4는 모두 동일한 데이터가 들어있음을 알 수 있을 겁니다. Enter 4,3 Enter 4,4 Enter 4,5 Enter 4,6 ... 등등 이런 코드가 얼마든 지 추가 되어도 새롭게 만들어진 프레임의 ebp-4는 동일한 데이터가 들어있습니다. 따라서 두 번 참조하면 바로 a에 접근 가능한 프레임 포인터를 얻는 것이지요. 다만 이 방식의 단점은 중첩될 때마다 새로운 지역변수를 할당하기 위한 자리가 밀려난다는 점입니다. 기존의 함수 호출로 인해 새로운 프레임이 생성될 때는 지역 변수 할당은 항상 ebp-4부터 시작했지만, 함수 호출이 아닌 지역 형성으로 인한 중첩 프레임 방식에서는 스택에 원하는 프레임으로 돌아가기 위한 포인터를 넣어두어야 하기 때문에 그 이후에 지역 변수 할당을 시작할 수 밖에 없으니까요. Enter 4,0에서는 지역변수 할당은 ebp-4 부터 시작되죠. Enter 4,1에서는 지역변수 할당은 ebp-8 부터 시작되구요. Enter 4,2에서는 지역변수 할당은 ebp-c 부터 시작합니다. 4씩 늘어난 위치부터 할당되는 거죠. 제가 소개 한 첫 번째 방식으로 중첩 프레임을 계산하면 중첩 프레임이 만들어질 때마다 다른 프레임 포인터를 굳이 넣어둘 필요가 없으므로 항상 지역 변수는 ebx-4부터 그대로 접근해서 프로그래머의 인지 오류를 예방 할 수 있지만 원하는 외부 프레임에 접근하기 위한 공간 복잡도가 증가해버리므로 리스크가 너무 크다고 할 수 있고, 두 번째 방식인 중첩 프레임이 만들어 질 때 마다 다른 프레임 포인터를 스택에 넣어두는 방식은 프로그래머의 인지 오류가 발생할 가능성이 있지만 효율성이 크기 때문에 이 방식을 채택하는 것 같군요. 간단히 요약하자면, 가장 바깥(0단계)의 프레임 포인터를 구하기 위해서 ebp-4부터, 지역 변수를 접근하는 것은 스택에 쌓인 (ebp-4부터 시작해서 이전 값을 참조하기 위한 여러 프레임 포인터들이 저장 되어 있을 것이고) 마지막 프레임 포인터 이후부터 접근해야하는 것이죠. 예를 들어, Enter 4,0부터 Enter 4,100 까지 중첩이 진행되었다고 가정할 때 과거 n 단계의 첫 번째 지역변수를 수정하는 방법은 ebp-4*(n+1)으로 해당 프레임 포인터를 구해서 ebx에 집어넣은 다음, (두 줄의 코드 작성) ebx-4*(n+1)으로 지역변수에 접근한다. 현재 단계의 지역변수에 접근하는 방법은 현재 100단계이므로 ebp-4*100까지 프레임 포인터가 저장되어있을 것이고, ebp-4*101로 지역변수에 접근하면 되겠습니다.
이렇게 설명 다하면서도 안정적으로 하는거 보니 엄청난 고수시군요ㄷㄷㄷㄷ
크랙하면 일반적으로 기존파일의 파일용량이 크랙하면 용량이 달라지나요?
임시(같값)값만 검색이되고 실제값은 검색이안되는데 이럴땐 어떻게 해야될까요?
저게 어셈블리어구나~ 하나도 모르겠네
진짜 보수 개념에 대한 좋은 강의입니다! 제가 1과 2의 보수가 이해가 안돼서 한참 찾아볼 때는 안나오던 강의가 암기식으로 외우고 알게 된 뒤에야 나오네요ㅠ 진짜 좋은 강의 감사합니다.
요즘 뭐하시나용
결국 그는 떠나습네다
어차피 조회수 안나오잖음
맞습네다
요약 TCP : UDP보단 데이터가 정확하지만 UDP보단 데이터 전송 속도가 느리게 전송하는 것. UDP : TCP보단 데이터 전송 속도가 빠르지만 TCP보단 데이터의 정확성이 떨어 질 수 있는 것.
중학교때 이 영상으로 코딩을 시작해 특성화고에 입학하고, 지금은 개발자가 되었습니다. 이제와서 보니 참 새록새록하네요. 정말 많은 도움 되었습니다. 감사합니다ㅎㅎ
좋은강의 공유해 주셔서 정말 감사합니다~!
joesonghabnida. geim-e jamgyeo issneun 30fps kodeuleul chajgo issdamyeon kodeuleul eotteohge chajnayo?
찐따 머저리 ㅅㄲ들 이런 강의 해주는것만으로도 감사히 여겨야지 반말에 아는척에 역겹다 사회에서 정말 만낙 싫은 존재들
쉽게 설명해주셔서 이해가 잘 돼요
언제 돌아와 주시나요..ㅠㅠ
의뢰 가능할까요?
안녕하세요. 맨 처음 프로그램을 열면 프로그램이 로드되기 전 상태에서 멈춰있다고 하셨는데, 그럼 그 단계는 c언어로 따지면 헤더파일을 로드하고 있는 중이라고 보면 될까요? 그리고 사용자 코드로 실행, 반환될 때까지 실행 두가지가 있는데 두 개가 정확히 어떤 의미를 가지고 있는건지 궁금합니다. 어디부터를 사용자 코드라고 인식하는 것이며, 반환은 무엇을 반환할 때 까지를 말하는 건가요?
잘 보고 갑니다!!!
형님 리버싱 강의 부탁드립니다 형님 강의가 젤 좋아요
스무디님을 중딩때부터 보면서 꿈을 계속 키우고 있습니다... 지금은 뭐하시는지 궁금한것들이 너무 많네요...꼭 돌아오셨으면 좋겠습니다.
잘 배우고 갑니다!
도움이 매우 되었습니다. 좋은 영상 감사합니다!
도움이 됩니다. 정말 감사합니다.
새거 새 제품 일경우 에는 임계갑이 0 이어야 하나요 ? 새 제품은 어떻게 나오나요 ?
🥰 고맙습니다.
좋은 영상 감사합니다. 잘 배웠습니다!
감기 걸리셨나요 ㅠㅠ
GOOD LECTURE!
2번 보니깐 완벽하게 이해 햇어요..ㅠㅠ 감사합니다
ARM에서는 처음 경우는 레지스터에 저장되고(변수), 두번째 경우! 레지스터주소를 저장하는 경우는 메모리(램)에 저장되는데요! 처음부분은 레지스터에서 직접적으로 저장한 값을 말해주고, 두번째경우 레지스터는 저장한 값이 아니라 메모리의 주소를 말해주는.... 리스트같은 것을 저장할 경우에도 두번째 경우에서처럼, 레지스터가 저장한 값을 말해주는 것이 아니라, 메모리 주소를 말해주는...
ARM 공부할려다가 너무 어려워서... 일단, intel로 먼저 공부 해야겠다!
잘들었습니다. 질문있습니다~! 25:00 에서 첫번째 인자값이라고 하면, p를 말씀하시는 건가요??
좋은강의 감사합니다~~!
답답해서 안볼란다ㅜ노해결
안 가라앉네