목록전체 글 (303)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8OnIU/btrBipxZbMp/YGcKwNc8OfwXQgxwuvDM40/img.png)
안드로이드 스튜디오에서 프로젝트를 생성했더니 위의 이미지처럼 파일명이 빨갛게 되어있었다. build가 덜 됐겠거니 생각되서 다 될 때까지 기다렸는데도 계속 저 상태이다. 오류 이유 오류가 생긴 이유는 version control 문제 때문이라고 한다. 안드로이드 스튜디오에서는 자체적으로 지원하는 버전컨트롤러(Git)를 자동으로 사용하게 만드는데, 버전이 맞지않으면 저렇게 된다고 한다. 해결 방법 File -> Settings -> Version Control 안에 가서 GIT이라고 써져있는 경로를 나의 프로젝트 폴더 경로로 변경했더니 해결되었다!
입력칸에다 이름을 입력하면 위에가 'Hello, [입력값]'으로 변경되는 간단한 앱을 만들어 보았다. 코드 import UIKit ///내가만든 클래스 class ViewController: UIViewController { @IBOutlet weak var lblHello: UILabel! @IBOutlet weak var txtName: UITextField! @IBAction func btnSend(_ sender: UIButton) { lblHello.text = "Hello," + txtName.text! //print(lblHello.text, txtName.text) } override func viewDidLoad() { super.viewDidLoad() let l = UILabel() ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TIe5k/btrBkEOqMnd/gVVUKkXj3LPS9kKyaSCX00/img.png)
getopt() #include // c 언어 파일 작성할 때 필요한 헤더 #include #include // string 헤더 #include // unix 계열 헤더 // argc : 명령 파라미터의 개수(자기 자신까지 1개로 침) // argv[] : 각각의 아규멘트의 값들(argv[0]는 자기자신) int main(int argc, char* argv[]) { // 옵션 넣을 변수 생성 int nOpt; printf("Original\n"); // 파일 실행할 때 입력한 매개변수들 모두 출력 for (int i = 0; i < argc; i++) { printf("value[%d] : %s\n", i, argv[i]); } printf("--------Options-------\n"); // g..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzzKaR/btrBmwu4Kv9/TSQkBTfpLJE5bVeHQIs2O0/img.png)
오늘은 사용자 인증에 대한 웹 해킹에 대하여 공부를 해보았다. 포트 port = 항구 port란 IP 내에서 애플리케이션(또는 프로세스)을 상호 구분을 위해 사용하는 번호이다. 운영 체제 통신의 종단점이라고도 한다. 2000년 중반부터는 거의 모든 시스템이 방화벽으로 보호되어 80번 웹 포트 외에는 모두 닫혀 있는 경우가 많아져 웹 해킹이라는 주제가 많이 연구되고 있다. ‘인터넷의 바다’, ‘인터넷 항해’ : 한 시스템의 포트에서 데이터가 출발하여 인터넷이라는 바다를 건너 다른 시스템의 포트에 도달하는 흐름에서 생긴 말 웹 해킹 방법 웹 해킹 방법에는 2가지가 있다. 1. 취약점의 존재 여부를 확인한 후 그곳을 통해침투를 시도하는 방법 2. 발견 가능한 모든 공격 표면을 찾아서 매트릭스를 작성한 후 하나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQuhIl/btrAUk4qdm5/33nZJkQ5eBkXEh3k4srhGk/img.png)
inflate inflate = 팽창 안드로이드에서는 XML 파일을 읽어서 실제 메뉴로 만들어주는 것을 inflate(팽창)한다고 한다. 메뉴 리소스를 팽창(inflate)하면 실제 메뉴가 생성된다. inflate 소스 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mymenu, menu); return true; } 메뉴 종류 안드로이드가 지원하는 메뉴의 종류에는 3가지가 있다. 1. 옵션 메뉴 : 액티비티의 주 메뉴. 화면 아래쪽에 숨겨져 있으며, MENU 버튼을 눌러야 나타난다. 2. 컨텍스트 메뉴 : 화면을 길게 누르고 있..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4E6Dg/btrAQ6q8peO/mMOYaIpBJ4Kw6QsFb9KYnk/img.png)
해당 Error는 하나의 프로젝트에서 여러 소스 파일을 작성하고 있을 때, 컴파일은 잘 되었지만 Link(실행 파일 만드는 작업)할 때 이미 실행 중인 실행 파일이 있다는 뜻이다. 즉, 실행 중인 파일을 없애고 다시 시작하면 된다.
class Man{ var age : Int var weight : Double func display(){ print("나이=\(age), 몸무게=\(weight)") } init(age: Int , weight : Double){ self.age = age self.weight = weight } } class Student : Man {//비어있지만Man의 모든 것을 가지고 있음 } var kim : Man = Man(age:10, weight:20.5) kim.display() var lee : Student = Student(age:20,weight:65.2) lee.display() print(lee.age) //나이=10, 몸무게=20.5 //나이=20, 몸무게=65.2 //20 class ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c18mrF/btrAV29l80t/sWgtdOHTu32VALYM1gcLf1/img.png)
지뢰찾기 게임 crack 제작 지뢰찾기 게임의 초 부분을 1초에 한 번 --> 0.1초에 한 번 씩 늘어나게 시간을 조작하여 crack 파일을 만든다. 1. 지뢰게임 파일을 Ollydbg에서 열고 command 찾기 Search for -> command해서 'bpx SetTimer' command를 찾는다. 2. 그 윗 부분에 PUSH 3EB라는 명령문을 찾기 3EB(16진수)를 10진수로 바꾸면 1000이다. 1초는 1000ms이므로 3EB는 1초를 나타낸다. 그러므로 PUSH 3EB '1초에 한 번 증가'하라는 명령문인 것을 알 수 있다. 3. PUSH 3EB --> PUSH 64 0.1초 = 100ms 100을 16진수로 변경하면 64이다. 0.1초에 한 번씩 증가하게 변경하기 위해서 PUSH 3..