BottomUp ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ง๋ ์ฑ์์ ์นด์นด์ค๋ก๊ทธ์ธ์ฐ๋ํ์ฌ ๋ฐ์์จ ๊ฐ์ ๋ค์ํ๋ฉด์ผ๋ก ๋๊ฒจ์ฃผ๊ณ ์ถ์๋ค. ๋๋ค์๊ณผ ์ด๋ฉ์ผ๊ฐ ๋๊ฐ์ง๋ฅผ ์ ๋ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ ํ ์ง ๊ณ ๋ฏผํ๋ค๊ฐ ArrayList๋ฅผ ์ฌ์ฉํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค. ArrayList ๊ฐ์ฒด profile์ ๋ง๋ค์ด์ฃผ๊ณ profile์ ๋ฐ์์จ nickname๊ณผ email์ ๋ฃ์ด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ putExtra์ profile์ ๋๊ฒจ์ฃผ์๋ค. ArrayList profile=new ArrayList(); profile.add(nickname); profile.add(email); Intent intent = new Intent(this, HomeActivity.class); intent.putExtra("profile",profile); startAct..
์ ์ฅํ๊ณ ์ถ์ ๋ฐ์ดํฐ๊ฐ ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ //ํ๋ String shared = "file"; //oncreate() SharedPreferences sharedPreferences = getSharedPreferences(shared,0); String value=sharedPreferences.getString("song",""); //์ ์ฅ๋ ๊ฒ ๋ถ๋ฌ์ค๊ธฐ/์ ์ฅ๋ ๊ฒ์ ๋ถ๋ฌ์ค๋ ๊ฒ์ด๋ฏ๋ก ์ค๋ฅธ์ชฝ์๋ ์๋ฌด๊ฒ๋ ์ ์ผ๋ฉด x et_save.setText(value); //ondestroy() //์ข ๋ฃ์ง์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ SharedPreferences sharedPreferences=getSharedPreferences(shared,0); SharedPreferences.Editor editor = sharedPre..
ํด๋น xml์ ์ด์ฉํ์ฌ list = findViewById(R.id.list); ๋ฅผ ์ด์ฉํด java์ list ๊ฐ์ฒด๋ฅผ ๋ง๋ ํ ArrayList์ ์ฐ๊ฒฐ์์ผ์ผ ํ๋ค. List data=new ArrayList(); ์์ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ArrayList ๊ฐ์ฒด์ธ ๋ฌธ์์ด ํ์ ์ data ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋ค. ์ด์ ArrayList์ ListView๋ฅผ ์ฐ๊ฒฐํด์ฃผ์ด์ผ ํ๋ค. ArrayAdapter๊ฐ ์ฌ๊ธฐ์ ์ค๊ฐ๋ค๋ฆฌ ์ญํ ์ ํ๊ฒ ๋๋ค. ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data); //this? ํ์ฌ Activity์ ํด๋น๋๋ค list.setAdapter(adapter);โ ์์ ์ฝ๋๋ฅผ ํตํด ArrayAdapt..
์๋๋ก์ด๋ ์ฑ์ ์นด์นด์ค ๋ก๊ทธ์ธ ์ฐ๋์ ํ๊ธฐ์ํด ํด์ํค ๊ตฌํ๋ ๋ฒ์ ์์๋ณด์๋ค. private void getHashKey(){ PackageInfo packageInfo=null; try{ packageInfo= getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); } catch (PackageManager.NameNotFoundException e){ e.printStackTrace(); } if(packageInfo==null){ Log.e("HashKey","HashKey:null"); } for(Signature signature:packageInfo.signatures){ try{ MessageDi..
btn_move=findViewById(R.id.btn_move); btn_move ๋ฒํผ์ ๋๋ ์ ๋ ํ๋ฉด์ด ์ ํ๋๋๋ก ํ๋ ค๋ฉด? //move๋ฒํผ์ ๋๋ฅด๋ฉด ์คํ๋๋ ๋ฉ์๋ btn_move.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { str=et_move.getText().toString(); //๊ฐ์ฒด ์์ฑ Intent intent=new Intent(MainActivity.this,SubActivity.class); intent.putExtra("str",str);//๋ฐ์ดํฐ๋ฅผ ๋ด๋๋ค. startActivity(intent); //์กํฐ๋นํฐ ์ด๋ฆ } }); Intent ๊ฐ์ฒด์ธ intent๋ฅผ ๋ง๋ ๋ค. (..
et_id = findViewById(R.id.et_id); // EditText btn_click = findViewById(R.id.btn_click); // Button (๋ง๋ ๋ณ์์ xml์ ์์ด๋๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์์ / ์์ฑ๋ถ์ฌ) //click๋ฒํผ์ ๋๋ฅด๋ฉด ์คํ๋๋ ๋ฉ์๋ btn_click.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { et_id.setText("๋ฒํผ์ด ๋๋ ธ๋ค!!!"); } }); click๋ฒํผ์ ๋๋ฅด๋ฉด EditText์ et_id์ "๋ฒํผ์ด ๋๋ ธ๋ค!!!" ๋ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ์ค์ ํด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค. app -> res -> drawable -> show in Explorer -> drowable ํด๋ ์์ ์ด๋ฏธ์ง ๋ณต์ฌ ๊ทธ๋ผ drawable์ ํด๋น ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋๋ค. ์ด๋ฏธ์ง์ ์ด๋ฆ์ด movie_image๋ผ๋ฉด ๊ฒฝ๋ก๋ @drawable/movie_image์ด๋ค.
TextView ์ฌ์ฉ๋ฒ 1,2. ๋ ์ด์์์ด ๊ฐ์ธ๋ ์ ๋๋ฅผ ์ ๋๋ฅผ ๊ฒฐ์ ํ ๋ -wrap_content: ํ ์คํธ๋ฅผ ์ ๋ ฅํ๋๋ฐ์ ํ์ํ ๊ธธ์ด๋งํผ๋ง์ ๊ฐ์ผ๋ค. -match_parent: ๋ถ๋ชจ๊ฐ ๊ฐ์ง๋ ํฌ๊ธฐ๋งํผ์ ๊ฐ์ผ๋ค. (ํด๋น ๋ ์ด์์์ ์ปจํ ์ด๋ ํฌ๊ธฐ๋งํผ์ ๊ฐ๋ ์ฑ์ด๋ค) 3.๋ ์ด์์์์ ํ ์คํธ๋ My first application!์ผ๋ก ์ ์ด์ฃผ์๋ค. 4.ํ ์คํธ ์ปฌ๋ฌ๋ ๋ณด๋ผ์์ผ๋ก ํด์ฃผ์๊ณ ๋ฐ์ดํ์์ #ffffff๋ฅผ ์ ์ด์ฃผ๋ฉด ์์์ ํํ์ด ๋จ๊ฒ๋๋ค. ๊ทธ ์์ํ์์ ์ํ๋ ์๊น์ ์ ํํด์ฃผ๋ฉด ์๋์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค. 5.๊ธ์์ ํฌ๊ธฐ๋ 25sp๋ก ํด์ฃผ์๋ค. ํ ์คํธ ํฌ๊ธฐ ๋จ์๋ sp๋ก ํ๋ค. EditText ์ฌ์ฉ๋ฒ 1. ์ํ๋ EditText๋ฅผ ๋ง๋ค๋ ๋์ ์ธ ์ก์ ์ ํ์ ๋ง๋ค์ด ์ฃผ๊ธฐ ์ํด์๋ ํด๋น EditText์ id๋ฅผ ๋ง๋ค..
ํ๋กค๋ก๊ทธ(์์ ๋ถ๋ถ) 1. main()์์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ณต๊ท์ฃผ์, ์ฆ RET๋ฅผ ์คํ์ ์ ์ฅํ๋ค. 2. ์ด์ ํจ์์ ์คํ์ ์์์ (ebp)๋ฅผ ์คํ์ ์ ์ฅํ๋ค. ํต์์ ์ผ๋ก SFP ๋ผ๊ณ ๋ง์ด ๋ถ๋ฆฐ๋ค. ์ด๋ ํจ์๊ฐ ๋๋๊ณ ๋ค์ ๋์๊ฐ ๋ ์คํ์ ์จ์ ํ ๋ณต๊ตฌํ๊ธฐ ์ํจ์ด๋ค. 3. ebp๋ฅผ esp๊ฐ ์๋ ์์น๋ก ์ด๋์ํจ๋ค. 4. ์ง์ญ๋ณ์ ํ ๋น ๋ฑ ์คํ์ ๊ธฐ๋ฅ ์ํ ์ํ๋ก๊ทธ 1. esp๋ฅผ ebp์์น๋ก ๋ณด๋ธ๋ค. (์ง์ญ๋ณ์ ์ญ์ /pop) 2. pop ebp => ์คํ์ ๊ผญ๋๊ธฐ ๊ฐ์ ebp์ ์ง์ด๋ฃ๋๋ค. => ์ด์ ํจ์์ ebp 3. pop eip => ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ RET๋ก ๋๊ธด๋ค. (eip๋ ๋ค์ ์คํํ ๋ช ๋ น์ด๋ฅผ ๋ด๋ ๋ ์ง์คํฐ) ์ฐธ๊ณ : ARGOS ์์คํ ํดํน ๊ต์ก์๋ฃ
rax rbx rcx rdx rsi rdi rbp r8 r9 r10 r11 r12 r13 r14 r15 rsp rip ๋ฒ์ฉ ๋ ์ง์คํฐ ์ฉ๋๊ฐ ํน๋ณํ๊ฒ ์ ํด์ง์ง ์์ ๋ ์ง์คํฐ๋ก, ๋ณ์์ ๊ฐ์ ์ญํ ์ ํ๋ค. ์ฉ๋๊ฐ ์ ํด์ ธ ์์ง ์์ง๋ง ๋์ ๋ฐ๋ผ ๊ทธ ์ฐ์์๊ฐ ์ ํด์ ธ ์๋ ๊ฒฝ์ฐ๋ ์กด์ฌ (rax๋ ํจ์ ๋ฆฌํด๊ฐ rsi๋ ํจ์ ํ๋ผ๋ฉํฐ) ํจ์ ํธ์ถ ๊ท์ฝ ํจ์๊ฐ ์คํ๋ ๋ ํ์ํ ์ธ์๋ค์ ์ ์ฅํ๋ ๋ ์ง์คํฐ๋ ์กด์ฌํ๋ค. (rdi rsi rcx rdx ...) ์คํํฌ์ธํฐ ์คํ์ ๊ฐ์ฅ ์์ชฝ์ ๊ฐ๋ฆฌํจ๋ค. ์คํ์ ํจ์๊ฐ ์ฌ์ฉํ ์ง์ญ ๋ณ์๋ค์ ์ ์ฅํ๊ธฐ ์ํด ์ค๋นํด๋์ ๊ณต๊ฐ์ด๋ค. (rsp) ํ๋ก๊ทธ๋จ ์นด์ดํฐ rip๋ ํ๋ก๊ทธ๋จ์นด์ดํฐ์ ์ญํ ์ ํ๋ค. ํ๋ก๊ทธ๋จ ์นด์ดํฐ๋ ๋ค์์ ์คํ๋ ๋ช ๋ น์ด๊ฐ ์์นํ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. mov a, b b๋ฅผ ..
์ด๋ฒ์ ๋์๋ฆฌ ๊ต์ก์์ ๋ฒํผ์ค๋ฒํ๋ก์ฐ์ ๋ํด ๋ฐฐ์ ๋ค. ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ ์ฃผ์ด์ง ์์ญ์ ๋์ด ๊ฐ์ ๋ ๋ฃ์ ์ ์๊ฒ ๋๋ ์ทจ์ฝ์ Ex) getsํจ์๋ ์ ๋ ฅ๊ฐ์ ๊ณ์ํด์ ๋ฐ์ ์ ์๊ณ ๊ฐ๊ฐ์ ๋ณ์๋ค์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด์๊ธฐ ๋๋ฌธ์ bof์ ๋ํ ์ ๋ ฅ์ ํฌ๊ธฐ 4์ด์์ผ๋ก ์ ๋ ฅํ์๋ target์ ๊ฐ์ผ๋ก ์นจ๋ฒํ๊ฒ ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋ฒํผ์ค๋ฒํ๋ก์ฐ์ด๋ค. (๋ณ์๋ค์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋๋๋ฐ ์ด ์์๋ ๋ฐ์ดํธ ํฌ๊ธฐ์์ธ๊ฐ??) ์ฐธ๊ณ : ARGOS ์์คํ ํดํน ๊ต์ก์๋ฃ
์ด์ ๋ธ๋ฆฌ์ด ๊ธฐ๊ณ์ด์ ์ผ๋์ผ ๋์๋๋ ์ธ์ด. ์คํํ์ผ๋ง ์์ด๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ค. ์ด์ง์๋ก ๋ ๊ธฐ๊ณ์ด๋ฅผ "๋์ปดํ์ผ๋ฌ" ๋ฅผ ์ด์ฉํ์ฌ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ ์ฝ๋๋ฅผ ์ป์ด๋ด๊ณ , ์ด๋ฅผ ๋ถ์ํ๋ค. ๋๋ฒ๊ฑฐ GDB(GNU Debugger) C, C++ ๋ฑ์ผ๋ก ๋ง๋ค์ด์ง ์คํ ํ์ผ์ ๋๋ฒ๊น ํ๋ ๋๊ตฌ 1. ์์/์ข ๋ฃ ์์: gdb [ํ๋ก๊ทธ๋จ๋ช ] ์ข ๋ฃ: quit or q 2. ๋ฌธ๋ฒ ๋ณ๊ฒฝ set disassembly-flavor intel 3. ๋ถ์ ํด๋น ํจ์ ์ฝ๋: disas [ํจ์์ด๋ฆ] ์คํ : run or r ๋ธ๋ ์ดํฌ ํฌ์ธํธ : b [์ง์ ] ๋ธ๋ ์ดํฌ ํฌ์ธํธ ๊ฑธ๋ฆฐ ์์น ์ฝ๋ : disas ๋ธ๋ ์ดํฌ ํฌ์ธํธ ๋ค ์ง์ฐ๊ธฐ: d or dis ๋ค์ ๋ช ๋ น์ด : ni ์งํ : c ๊ฐ์ ์ ํ : jump [์์น] -> ํจ์, ํ, ๋ฉ๋ชจ..