ν°μ€ν 리 λ·°
AlertDialog
Dialog(λ€μ΄μΌλ‘κ·Έ)λ λ§ κ·Έλλ‘ λν μμμ κ°λ μΌλ‘ Alert(νμ )λ₯Ό λμ μ±μ μ¬μ©νλ μ¬μ©μλ€μκ² μΆκ° μ λ ₯μ λ°κ±°λ λ€μ νμ(Yes, No, Cancel)λ₯Ό κ²°μ μν€λ μ©λλ‘ μ¬μ©λ©λλ€. μ΄ λ©μμ§ μ°½μ μ¬μ©μκ° μλ΅μ νμ§ μμΌλ©΄ νλ©΄μ μ¬λΌμ§μ§ μκ³ κ³μ λκΈ°νκ² λ©λλ€.
AlertDialogμλ μ¬μ©λλ μμλ€
- Title: λνμμμ μ λͺ©
- Message: λνμμλ₯Ό μ΄ν΄νκΈ° μν λ΄μ©
- Positive Button: μ¬μ©μμ κΈμ μ μΈ λ°μμ μλ―Έ(Yes, λ€, νμΈ)
- Negative Button: μ¬μ©μμ λΆμ μ μΈ λ°μμ μλ―Έ(No, Cancel, μ·¨μ)
- Netural Button: κΈμ λλ λΆμ λ μλ λ°μμ μλ―Έ(Cancel, Remind Later
μΌλ°μ μΌλ‘ μ¬μ©μλ€μκ² κ΄κ³ μ± λμλ₯Ό μ»κΈ° μν΄μλ μμ κ°μ λν μμλ₯Ό λμ Yes λλ No κ°μ μλ΅μ μ»μ ν Mainactivityλ‘ λμ΄κ°λλ‘ κ΅¬ννκ² λ©λλ€. λ§μ½ Cancel λ²νΌμ΄ ꡬνλμ΄ μμ§ μμ κ²½μ° ννΌλ ν μ μκΈ° λλ¬Έμ κ°λ°μκ° κ΅¬νν΄λ νλ¦λλ‘ μ²λ¦¬λ©λλ€.
Setcancelable νμ©
AlertDialog.Builder => setCancelable(boolean cancelable)
λ³λμ Cancel λ²νΌμ΄ μλ λνμμλ₯Ό 무λ ₯ννκΈ° μν΄μ "Setcacelable" λ©μλλ₯Ό ν΅ν΄ μ¬μ©μ νλ©΄μ λμμ§ AlertDialog λν μμλ₯Ό λ€λ‘ κ°κΈ°(Back) νμ¬ μνλ νλ¦λλ‘ μ‘°μν μ μμ΅λλ€.
setCancelableμ Boolean λ°©μμ΄κΈ° λλ¬Έμ True λλ False λ₯Ό κ°μ§λλ€.
- True: νμ±ν
- False: λΉνμ±ν(λλΆλΆμ λνμμλ False νμμ κ°μ§)
μ±μ μ·¨μ½μ μ ν μ€νΈνκΈ° μν΄μ μ΅μμ κΆνμΈ "root"λ₯Ό κ°μ§ μνμμ μ§νμ νκ² λλλ°, 루ν λλ°μ΄μ€λ₯Ό νμ§ν κ²½μ° AlertDialogλ₯Ό νΈμΆμ ν΅ν΄ exit() μ’ λ£μμΌ μ λλ‘ λ μ κ·Όμ΄ νλ€μ΄μ§κ² λ©λλ€.
λ§μ½ AlertDialog μ°½μ΄ νΈμΆλλ μμ μ Mainactivityκ° λ°±κ·ΈλΌμ΄λμμ μ€νμ΄ λκ³ μλ μν©μ΄λΌλ©΄ setCancelableμ μ‘°μνμ¬ μ±μ΄ μ’ λ£λμ§ μλλ‘ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ 곡격μλ λλ°μ΄μ€μ κΆν κ²μ¬μ λ¬΄κ²°μ± κ²μ¬κΉμ§ μ°νν μ μλ μν©μ λ§λ€ μ μμ΅λλ€.
Rooting/Integrity check Bypass
루ν λ λλ°μ΄μ€μμ μ±μ μ€ννκ² λ κ²½μ° "루ν λ λ¨λ§κΈ°μμλ μ¬μ©νμ€ μ μμ΅λλ€." λ©μμ§λ₯Ό μΆλ ₯νκ² λ©λλ€. μ¬κΈ°μ "νμΈ" λ²νΌμ λλ₯΄κ² λ κ²½μ° μ±μ κ°μ μ μΌλ‘ μ’ λ£λκ² λ©λλ€.
λμ»΄νμΌλ μ½λλ₯Ό λΆμν΄λ³΄λ©΄ 루ν μ νμ§νκΈ° μν΄ 2κ°μ§ ν¬μΈνΈλ₯Ό 체ν¬ν©λλ€. Smali μμ€λ₯Ό μμ ν΄μ 루ν 체ν¬λ₯Ό μ°νν μ μλλ‘ ν©λλ€.
- μ€νλ λλ°μ΄μ€μμ "su" λͺ λ Ήμ΄κ° μ€νλλμ§
- μ€νλ λλ°μ΄μ€μ 루ν κ³Ό κ΄λ ¨λ νμΌλ€μ΄ μ‘΄μ¬νλμ§(6κ²½λ‘)
리ν¨ν€μ§ ν μ€νν΄λ³΄λ©΄ μ΄λ²μλ "μ± μλΉμ€κ° μΌμμ μΌλ‘ μ€μ§λμμ΅λλ€." λ©μμ§κ° λνλ©λλ€. λ§μ°¬κ°μ§λ‘ "νμΈ" λ²νΌμ λλ₯΄κ² λλ©΄ μ±μ΄ κ°μ μ μΌλ‘ μ’ λ£λμ΄ μ€νν μ μμ΅λλ€.
μ±μ 무결μ±μ 체ν¬νλ λ°©λ²μ ν΄μ¬, μΈμ€ν¨λ¬, κ°λ°μν€(μ€μ΄λν€) λ± μ¬λ¬ κ°μ§ λ°©λ²μ΄ μ‘΄μ¬νμ§λ§ μμ²λΌ Mainactivitiyκ° λν μμμ μκ΄μμ΄ λ°±κ·ΈλΌμ΄λμμ μ€νλλ©΄ κ°λ¨ν νΈλ¦μ ν΅ν΄ μ½κ² μ°νν μ μμ΅λλ€.
MainActivity μͺ½ μμ€λ₯Ό νμΈν΄λ³΄λ©΄ μ΄ 2κ³³μ "setPositiveButton"μ΄ μ‘΄μ¬ν©λλ€. μΌλ°μ μΌλ‘ μ°μΈ‘μ λ°°μΉλ PositiveButtonμ μ¬μ©μμ κΈμ μ μΈ λ΅λ³μ μ λνλ λ©μλ μ λλ€. κ΄κ³ μ± λμ μ¬λΆλ μΉμΈμ νμνλ λ²νΌμ μ°μΈ‘μ λ°°μΉλκ³ μ’μΈ‘μ΄ λΆμ μ μΈ μλ΅μ κ°μ§λλ€.
setPositiveButton => setNeutralButton(μ’μΈ‘ λ°°μΉ)
μ¬μ©μμ μ±μ μ’ λ£μν€λ Positivebuttonμ΄ μ΄λ€ λΆλΆμΈμ§ 체ν¬νκΈ° μν΄ νλμ© μ½λλ₯Ό λ³μ‘°ν΄μ 리ν¨ν€μ§ ν©λλ€.
NeutralButton λ©μλλ₯Ό ν΅ν΄ μ°μΈ‘μ μλ λ²νΌμ΄ μ’μΈ‘μΌλ‘ λμ΄κ°κ²μ νμΈνμ€ μ μμ΅λλ€. μ΄λ λΌμΈμ λ²νΌμ΄ μ¬μ©μμ μ±μ μ’ λ£μν€λμ§ νμΈνμΌλ λλ² μ§Έλ‘ Falseλ‘ λΆμ¬λ setCancelable λ©μλλ₯Ό μ°ΎμμΌ ν©λλ€.
μ¬μ©μμ μ±μ μ’ λ£μν€λ setPositiveButtonμλ λν μμλ₯Ό 무λ ₯νμν€μ§ λͺ»νλλ‘ setCancelable(false); λ©μλλ₯Ό μΆκ°ν΄ λμ΅λλ€.
if-eqz v0, :cond_2 => if-nez v0, :cond_2
λμ»΄νμΌ μνμ μ½λμ μμΉλ₯Ό κΈ°μ΅ν΄λμ ν smali μ½λλ‘ λμ΄κ° λΆκΈ°λ¬Έ μμ ν 리ν¨ν€μ§ μμ μ ν΄μ£Όμλ©΄ λ©λλ€.
eqz: ==(κ°λ€)
nez: !=(λ€λ₯΄λ€)
μ΅μ’ μ μΌλ‘
1. Rooting μ²΄ν¬ smali μ½λ μμ (su, filepath)
2. μ±μ μ’ λ£μν€λ Button νμ
3. λΆμ¬λ setCancelable λ©μλ λΆκΈ°λ¬Έ μμ
μμ 3κ°μ§ λ°©λ²μ ν΅ν΄ μ¬μ©μμ μ± κ°μ μ’ λ£λ₯Ό λ§μ μ μκ² λ©λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ λν μμκ° νΈμΆλμμ λ MainAcitivity κ° λ°±κ·ΈλΌμ΄λμμ λ§μλλ‘ μ€νλμ§ μκ² ν΄μΌ λ©λλ€. νΈμΆλ λν μμμ μλ΅μ κ±°μΉ νμ μ±μ΄ μ€νλλ ꡬ쑰λΌλ©΄ λ³΄λ€ μμ νκ² μ΄μν μ μκ² λ©λλ€.
'MOBILE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] FairPlay DRM 볡νΈν (0) | 2021.09.26 |
---|---|
[iOS] Shared Clipboard μ·¨μ½μ (0) | 2021.09.25 |
[iOS] Functions Hooking (1) | 2021.09.24 |
[iOS] Objection μ£Όμ λͺ λ Ήμ΄ (0) | 2021.02.14 |
[Android] Data Storage(Plain/Encryption) μ·¨μ½μ (0) | 2021.02.13 |