[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
2014 CodeEngn Conference 11
IE 원데이로 시작하는 실전 익스플로잇!
BOF, FSB, UAF 등의 메모리 커럽션 취약점을 워게임, CTF 통해서 배우게 되지만 비교적 더 낮은 난이도에도 불구하고 실제 상용 프로그램에 대해서는 막연한 느낌뿐인 학생들이 많은 것 같다. 웹브라우저에서 발견되는 취약점 중 가장 흔한 UAF에 대해 설명하고 비교적 최신에 발견된 CVE-2014-0322, CVE-2014-1776 두가지 전형적인 IE 브라우저 UAF 취약점을 익스플로잇하는 방법을 설명하려고 한다. 추후 사례로 소개되는 두 가지 취약점에 대해 직접 학습이 가능하도록 단계별 튜토리얼을 별도 제공하고자한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
The document discusses different methods for scheduling uplink transmissions in LTE including Buffer Status Report (BSR), Scheduling Request (SR), and Random Access procedures. It distinguishes between contention-based and non-contention based random access, with non-contention used for positioning, handover, and downlink data when in connected state, and contention-based used for establishing connections, reestablishing connections, and initiating uplink/downlink data transfers. It details the messages involved in contention-based random access including Message 3.
C#에서의 객체지향에 관한 PPT입니다
필자의 생각과 경험으로 만든 자료라 일반적인 교육 자료와 사용하는 용어 등이 매우 다를 수 있습니다.
---------------------------------------------------
PPT about Object-Oriented Programming in C# Language
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
2014 CodeEngn Conference 11
IE 원데이로 시작하는 실전 익스플로잇!
BOF, FSB, UAF 등의 메모리 커럽션 취약점을 워게임, CTF 통해서 배우게 되지만 비교적 더 낮은 난이도에도 불구하고 실제 상용 프로그램에 대해서는 막연한 느낌뿐인 학생들이 많은 것 같다. 웹브라우저에서 발견되는 취약점 중 가장 흔한 UAF에 대해 설명하고 비교적 최신에 발견된 CVE-2014-0322, CVE-2014-1776 두가지 전형적인 IE 브라우저 UAF 취약점을 익스플로잇하는 방법을 설명하려고 한다. 추후 사례로 소개되는 두 가지 취약점에 대해 직접 학습이 가능하도록 단계별 튜토리얼을 별도 제공하고자한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
The document discusses different methods for scheduling uplink transmissions in LTE including Buffer Status Report (BSR), Scheduling Request (SR), and Random Access procedures. It distinguishes between contention-based and non-contention based random access, with non-contention used for positioning, handover, and downlink data when in connected state, and contention-based used for establishing connections, reestablishing connections, and initiating uplink/downlink data transfers. It details the messages involved in contention-based random access including Message 3.
C#에서의 객체지향에 관한 PPT입니다
필자의 생각과 경험으로 만든 자료라 일반적인 교육 자료와 사용하는 용어 등이 매우 다를 수 있습니다.
---------------------------------------------------
PPT about Object-Oriented Programming in C# Language
NDC2016에서 발표한 카툰999의 포스트모템 발표입니다.
피드백의 힘이라는 주제로 카툰999를 개발하며 어떻게 유저들의 피드백을 구분하고 받아들였는지, 피드백을 반영할 때 주요한 사항들은 무엇이 있는지에 대해 정리해보았습니다. 사실 설명없이 문서만으로는 부족함이 있을수도 있겠지만 많은 분들께 도움이 되길 바랍니다! :)
무...물론 카툰999도 다운받아주시면 감사...!!
1.일렉트론이란? + NW.js vs. Eelectron
2.중요점
3.설명
4.선행요구사항
5.구조
6.Main Process
7.Renderer Process
8.쉽게 이해하기
9.IPC
10.전체적인 흐름
11.Package
12.시작하기
13.참고
14.THANK YOU
NDC2016에서 발표한 카툰999의 포스트모템 발표입니다.
피드백의 힘이라는 주제로 카툰999를 개발하며 어떻게 유저들의 피드백을 구분하고 받아들였는지, 피드백을 반영할 때 주요한 사항들은 무엇이 있는지에 대해 정리해보았습니다. 사실 설명없이 문서만으로는 부족함이 있을수도 있겠지만 많은 분들께 도움이 되길 바랍니다! :)
무...물론 카툰999도 다운받아주시면 감사...!!
1.일렉트론이란? + NW.js vs. Eelectron
2.중요점
3.설명
4.선행요구사항
5.구조
6.Main Process
7.Renderer Process
8.쉽게 이해하기
9.IPC
10.전체적인 흐름
11.Package
12.시작하기
13.참고
14.THANK YOU
빠른 Android 개발과 쉬운 유지보수를 위한 오픈소스 프레임워크 AndroidAnnotations.
AndroidAnnotations에 대해서 알고 함께 사용해 봅시다^_^!
오늘은 JuranoSaurus의 첫 번째 강의인 AndroidAnnotations 시작하기 입니다.
JuranoSaurus Project Team. 김성근 김태희 서주리
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
『이펙티브 디버깅』 디버깅 지옥에서 탈출하는 66가지 전략과 기법
디오미디스 스피넬리스 지음 | 남기혁 옮김 | 한빛미디어 | 24,000원
★ 소프트웨어의 완성은 디버깅!
이 책은 경험이 풍부한 개발자를 대상으로 소프트웨어를 완성하는 마지막 기술을 가르친다. 저자는 35년 경험에서 깨우친 일반 원칙, 높은 수준의 전략, 구체적인 기술에 관한 조언, 효율 높은 도구, 창의적인 기법, 효과적인 디버깅과 관련된 행동 특성을 제시한다. 저자가 제안하는 66개의 전문 기법을 통해 디버깅 역량을 확장하고, 각 문제 상황에 맞는 최상의 접근법을 선택할 수 있을 것이다.
★ 주요 내용
다양한 소프트웨어 장애를 해결하는 높은 수준의 전략과 방법
프로그래밍, 컴파일, 실행 시 적용할 구체적인 기법
디버거를 최대한 활용하는 방법
믿고 투자해도 좋은 범용 기술과 도구
막다른 길과 복잡한 미궁에서 탈출하는 첨단 아이디어와 기법
디버깅하기 쉬운 프로그램을 만들기 위한 조언
멀티스레딩, 비동기, 임베디드 코드 디버깅에 특화된 접근법
향상된 소프트웨어 설계, 구축, 관리를 통한 버그 회피법
1. C# 강좌<br />C# 기본개념<br />닷넷이란 무엇인가?<br />마이크로소프트 사가 닷넷을 공표하였다. 닷넷... 아직 닷넷이란 단어가 생소할거다. 그냥 프로그램 Language 라고 알아두면 편할것이다. 닷넷이 발표되면서 닷넷에 대한 관심이 많이 두드러지고 있다. 닷넷을 기반으로 바꾸는 기업들이 하나둘 늘고있다. 닷넷의 가장 두드러진 특징은 XML의 지원이다. XML은 현제 표준안으로 채택되어져 있다.<br />XML을 간단히 설명하자면 XML을 지원하는 모든 프로그램과 의사소통을 할수 있는 언어라는 것이 특징이다. 예를들어 만약 VC 로 계산기 프로그램을 만들었다고 하자. C#에서 VC에서 만든 계산기를 써서 계산을 하고 싶다고 하자. 기존에는 프로그램 끼리 의사소통 방식이 달라서 사용할수 없었지만 공통적인 언어인 XML이 나옴으로서가능해졌다.또한 닷넷은 객체지향 프로그래밍이다. 객체? 생소한 언어일것이다. 게시판을 예를들어 간단하게 설명하겠다. 게시판에는 글쓰기,글읽기,글편집,검색 등등의 많은 기능들이 있다. 이 기능들 각각이 객체이다. 이 객체는 재 사용이 가능하며 이로써 프로그램의 효율을 높일수 있다.닷넷에는 C#, ASP.NET, Visual Basic.NET,Visual C++.NET 등의 다양한 언어를 지원하고 있다. 이중에서 C#은 닷넷에 가장 효율화된 언어라고 생각한다. 닷넷 플레폼은 Framework를 기반으로 하고 있다. Framework에 대한 설명은 다음장에서 하기로 하자.<br />닷넷에 대한 설명은 이쯤하고 닷넷이 어떻게 생겼는지 함 보자..ㅡㅡ;<br />.NET Framework란?<br />.NET Framework는 마이크로소프트 사가 만들어 낸 응용 프로그램 개발은 위한 새로운 플랫폼이다.<br />.NET Framework의 첫번째 릴리즈는 Windows 운영체제들에서만 실행되지만 이후에 나올 릴리즈는 다양한 플랫폼을 지원할 것이다. 다양한 플랫폼을 지원함으로서 서로 다른 기종들간의 통합 수단으로 쓰일수 있게 한다는 것이 목표이다. .NET Framework은 어떠한 언어로도 사용할수 있도록 설계되었다. C++,Vbasic이나 아주 오래된 COBOL등에서도 지원할수 있다. .NET Framework는 기본적으로 클라이언트 언어와 개체지향 프로그래밍 기술을 이용해서 사용하는 코드 라이브러리로 이루어져 있다. 즉 어떠한 기능을 가능 코드들의 집합이 .NET Framework이고 우리는 그것을 필요할때 하나하나 꺼내 사용하면 되는 것이다. .NET Framework로 응용프로그램을 작성하려면 .NET Framework를 지원하는 언어를 사용해서 .NET Framework 코드 라이브러리를 사용하여 프로그램을 작성하면 되는 것이다.<br />닷넷의 기본구조<br />닷넷을 처음 실행시키면 다음과 같은 화면을 보게 될 것이다.<br />1. 기존의 프로젝트를 오픈한다.2. 새로운 프로젝트를 만든다.<br />우리는 처음 프로젝트를 만드는것이기 때문에 2번을 선택한다.2번을 선택하면 다음과 같은 화면을 보게 될 것이다.<br />1. 프로젝트의 종류이다. 우리는 C#을 하기 위한 것이니 C# 프로젝트를 선택한다.2. C#으로 만들 프로그램의 종류이다. 윈도우폼에서 실행되는 응용프로그램이라면 Windows를 선택하기 바란다.3. 프로젝트의 이름을 지정한다. 프로젝트가 저장되는곳은 (위치름로젝트파일) 이다.4. 프로젝트가 들어갈 디렉토리를 지정한다.<br />프로젝트를 선택하고 들어가면 다음과 같은 화면이 나타난다.<br />솔루션 탐색기에는프로젝트 정보와 파일 정보가 나타나있다.속성 창에서는 각 폼에 대한 속성값을 지정해 줄수 있다.<br />C#의 기본구조<br />C#의 기본 소스이다.<br />using System;<br />using System.Drawing;<br />using System.Collections;<br />using System.ComponentModel;<br />using System.Windows.Forms;<br />using System.Data;<br />namespace WindowsApplication3<br />{<br />/// <br />/// Form1에 대한 요약 설명입니다.<br />/// <br />public class Form1 : System.Windows.Forms.Form<br />{<br />/// <br />/// 필수 디자이너 변수입니다.<br />/// <br />private System.ComponentModel.Container components = null;<br />public Form1()<br />{<br />//<br />// Windows Form 디자이너 지원에 필요합니다.<br />//<br />InitializeComponent();<br />//<br />// TODO: InitializeComponent를 호출한 다음 생성자 코드를 추가합니다.<br />//<br />}<br />/// <br />/// 사용 중인 모든 리소스를 정리합니다.<br />/// <br />protected override void Dispose( bool disposing )<br />{<br />if( disposing )<br />{<br />if (components != null) <br />{<br />components.Dispose();<br />}<br />}<br />base.Dispose( disposing );<br />}<br />#region Windows Form Designer generated code<br />/// <br />/// 디자이너 지원에 필요한 메서드입니다.<br />/// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.<br />/// <br />private void InitializeComponent()<br />{<br />}<br />#endregion<br />/// <br />/// 해당 응용 프로그램의 주 진입점입니다.<br />/// <br />[STAThread]<br />static void Main() <br />{<br />Application.Run(new Form1());<br />}<br />}<br />}<br />C#의 기본구조는 namespace 안에 하나 이상의 클래스가 포함되어 있는 구조이다.using System.Data;using 는 함수를 줄여주는 선언이다. System.Data.Socket 이란 함수가 있는데 위에서 using 함수로 using System.Data라고 선언해주면 선언 후반부 부터는 Socket라고만 적어줘도 System.Data.Socket가 불려진다는 것이다.<br />namespace WindowsApplication3네임스페이스의 이름을 정해주는 곳이다. 꼭 여는테그 닫는테그를 붙여 주어야 한다.<br />public class Form1 : System.Windows.Forms.Form클레스의 이름을 정해주는 곳이다. 기본적으로 Forms.Form을 상속받는다.<br />public Form1()프로그램이 실행하면 이곳의 코드가 실행된다.<br />private void InitializeComponent()폼의 속성값을 지정하는 부분이다. 아직은 특별한 경우가 아니면 건들 필요가 없다.<br />static void Main() { Application.Run(new Form1()); }아마도 많이 보아왔을 것이다. 프로그램의 주 진입점이며 하나의 Main()이 꼭 있어야 한다.프로그램이 실행되면 Application.Run(실행될 클래스) 가 호출된다.<br />프로그램을 작성하고 디버깅 방법은 위에 화살표 모양을 누르면 된다.<br />C#을 배울까? VB.NET 배울까?<br />C#을 배워야하나 VB.NET 를 배워야 하나? 본인도 맨 처음 많이 고민했던 부분이다. 상당히 많은 시간을 고민했다. 우선 본인은 C#을 추천한다. 이유는 현제 C# 개발자가 VB.NET 개발자 보다 많고 그많큼 소스나 강좌 같은 자료가 많다. 솔직히 프로그램을 짜다보면 책 한권으로 부족한 부분이 있는데 자료를 찾아보더라도 C# 같은 경우에는 웬만한건 있을거라 생각한다. 아직은 VB.NET 개발자 쪽이 적은 편이다.기존에 VB쪽 계통에 프로그램을 공부하시던 분이라면 VB.NET 쪽을 배우는 것도 좋은 생각이지만 처음 하시는 분이라면 C#을 배우기 바란다.<br />