ν°μ€ν 리 λ·°
Frida μ½λλ₯Ό ν΅ν΄ λμ μ±μ ν΄λμ€ -> λ©μλ -> λ°ν κ°μ νμΈνμ¬ λ°νμ κ°μ μ‘°μνλ λ°©μλ μ‘΄μ¬νμ§λ§ μ λ°μ μΈ λ‘μ§ λΆμμ΄ νμν κ²½μ°κ° μ‘΄μ¬ν©λλ€. μ΄λ Ghidraλ₯Ό ν΅νλ©΄ μ’ λ νΈνκ² μ‘°μνκ³ μ νλ μ 보λ₯Ό νμΈ ν μ°νκ° κ°λ₯ν©λλ€.
Frida μ½λλ₯Ό ν΅ν΄ νμ₯ νμ§λ₯Ό μ°ννλ λ°©λ²μ νλ¨μ κ²μκΈμ μ°Έκ³ ν΄μ£Όμλ©΄ λ©λλ€.
Ghidraλ₯Ό ν΅ν΄ νμ₯ νμ§λ₯Ό μ°ννκΈ° μν΄μ λμ μ±μ λν λ°μ΄λ리 νμΌμ λΆμν΄μΌ λ©λλ€. μ°μ λ²λ€ 컨ν μ΄λ κ²½λ‘λ‘ μ΄λν΄ DVIA-v2 λλ ν λ¦¬λ‘ μ κ·Όν©λλ€.
λ°μ΄λ리 νμΌμ μλμ μΌλ‘ μ©λμ΄ ν¬κΈ°λλ¬Έμ μ½κ² νμΈν μ μμ΅λλ€. ν΄λΉ νμΌμ μ°ν΄λ¦νμ¬ λ‘컬 PCλ‘ Export ν©λλ€.
File -> New Project νμ¬ νλ‘μ νΈλ₯Ό μμ±ν μΆμΆν λ°μ΄λ리 νμΌμ λλκ·Έ μ€ λλ‘ν΄μ€λλ€.
Ghidraμμ λμ λΆμμ μννκΈ° μ μ ν΄λΉ νμΌμ΄ Mach μ€λΈμ νΈ λ°μ΄λ리 νμΌμΈ κ²μ νμν΄ μ€λλ€. OKλ₯Ό λλ₯Έ ν κ³μ μ§νν©λλ€.
DVIA-v2 λ°μ΄λ리 νμΌμ λν μ΄λ¦, μ¬μ΄μ¦, ν¬λ§· νμ λ± κ²°κ³Ό κ°μ λ΄μ©μ κ°λ΅νκ² νμν΄μ€λλ€. OKλ₯Ό λλ¬ λ§μ μ§νν΄ μ€λλ€.
λμ λΆμμ μννκΈ° μ μ μ΅μ μ μ§μ ν μ μμ΅λλ€. κΈ°λ³Έ κ° κ·Έλλ‘ λκ³ Analyzeλ₯Ό ν΄λ¦νλ©΄ μ’ μ μ λλκ·Έ μ€ λλ‘ ν΄μ€ λ°μ΄λ리 νμΌμ λν μ λ°μ μΈ λΆμμ΄ μμλ©λλ€.
μ°μΈ‘ νλ¨μ 보μλ©΄ λͺ¨λμκ³κ° λμκ°λ©΄μ νΌμΌν μ΄μ§κ° μ‘°κΈμ© μμΉλ©λλ€. 100%κ° λ λκΉμ§ μ μ κΈ°λ€λ €μ£Όμλ©΄ λ©λλ€.
λΆμμ νμν νΉμ λ¬Έμμ΄μ κ²μν΄μ λ‘μ§ λΆμμ ν¨κ³Όμ μΌλ‘ ν μ μλ€. Search νμμ For StringμΌλ‘ μ΄λν©λλ€.
λΆμμ νμν λ¬Έμμ΄μ "device is jailbroken"μ΄λ©° Filterμ μ λ ₯νλ©΄ λ°μ΄λ리 νμΌ λ΄λΆλ₯Ό κ²μνμ¬ λνλ΄ μ€λλ€.
String Viewμ μνλ λ¬Έμμ΄μ λλΈν΄λ¦νλ©΄ λ©μΈ νλ©΄μ μ λ ₯ν λ¬Έμμ΄μ΄ μ΄λ λΌμΈμ μ‘΄μ¬νλμ§ νμΈν μ μμ΅λλ€. λΉ¨κ° ν λ리λ₯Ό λλΈν΄λ¦ν΄μ λ‘μ§μΌλ‘ μ΄λνκ³ μ ν©λλ€.
νμ₯ νμ§ν μ λ°μλλ 문ꡬλ₯Ό νμΈνμΌλ ν΄λΉ 문ꡬλ₯Ό ν΅ν΄ λμ»΄νμΌλ λ΄μ©κ³Ό λμ‘°ν΄λ³΄λ©΄μ κ°μ μμ ν μλ μμ΅λλ€. λ§μ½ λ‘μ§ νμ μ΄ μ½μ§ μλ€λ©΄ Graph νμμ λ‘μ§μ ν΅ν΄ νμ νλ©΄ λ³΄λ€ μ½κ² λΆμμ΄ κ°λ₯ν©λλ€.
Graph Functionμ λλ₯΄λ©΄ DVIA λ‘μ§μ νλ¦μ νμ ν μ μμ΅λλ€. w8κ³Ό 0x0 κ°μ μνΈκ΄κ³λ₯Ό ν΅ν΄LAB_100195 da8μΌ κ²½μ° Device_is_Not_JailbrokenμΌλ‘ μ΄λλκ³ μλλ©΄ Device_is_Jailbrokenμ΄ μλ λ‘μ§μΌλ‘ μ΄λλκ³ μμμ νμΈν μ μμ΅λλ€.
λ©λͺ¨λ¦¬ μμμ ν λΉλ μ£Όμλ₯Ό νμΈνκΈ° μν΄ bdd0 κ°μ λ§μ°μ€λ₯Ό μ¬λ € Imagebase Offset κ°μ νμΈν μλ°μ€ν¬λ¦½νΈ μ½λλ‘ μμ±νμ¬ μ±μ μ€νμ μ§μ ν΄λ λ©λͺ¨λ¦¬ μ£Όμλ‘ κ±°μΉλλ‘ ν΄μΌ λ©λλ€.
/* File Name is Jailbreak_Test3.js */
var realBase=Module.findBaseAddress('DVIA-v2')
console.log(realBase)
var Jailbreak_address = realBase.add('0x1959dc')
console.log(Jailbreak_address)
Interceptor.attach(Jailbreak_address,{
onEnter:function(args){
console.log(JSON.stringify(this.context))
}
})
νμ₯ νμ§ λ²νΌμ ν΄λ¦νλ©΄ μ§μ ν΄λ λ©λͺ¨λ¦¬ μ£Όμλ‘ μ΄λν΄μ μ§λκ°κ²λλ©° (this.context)λ₯Ό ν΅ν΄ λ°νλλ λ μ§μ€ν° κ°μ νμΈν μ μμ΅λλ€.
* λ©λͺ¨λ¦¬μμλ "h"λ₯Ό μ¬μ©ν΄μ 16μ§μλ₯Ό νννλ©° μλ°μ€ν¬λ¦½νΈμμλ "0x"λ₯Ό μ¬μ©ν΄ 16μ§μμΈ κ²μ ννν©λλ€.
μ½λλ₯Ό μ€ν λ° μ±μ μλν΄λ³΄λ©΄ νμ₯μ΄ νμ§λ μ w8(x8)μ κ°μ΄ "1"μ΄ μΆλ ₯λ κ²μ νμΈν μ μμ΅λλ€.
-U : usb λ‘ μ°κ²°
-l : μ€ν¬λ¦½νΈ λ‘λ
0x100ef0000: DVIA λ°μ΄λλ¦¬κ° λ©λͺ¨λ¦¬μ ν λΉλ μ£Όμ
0x1010859dc: μμ νκ³ μ νλ ν΄λΉ λΆλΆλ§νΌ μ΄λν λ©λͺ¨λ¦¬ μ£Όμ
/* File Name is Jailbreak_Test3.js */
var realBase=Module.findBaseAddress('DVIA-v2')
console.log(realBase)
var Jailbreak_address = realBase.add('0x1959dc')
console.log(Jailbreak_address)
Interceptor.attach(Jailbreak_address,{
onEnter:function(args){
console.log(JSON.stringify(this.context))
this.context.x8 = 0x0
console.log(JSON.stringify(this.context))
}
})
νμ₯λ λ¨λ§μΌ κ²½μ° x8(w8)μ λ°ν κ°μ΄ “1”μ΄ μμΌλ μ½λμ x8 = 0x0 μ¦ “0”μΌλ‘ μμ νμ¬ μ½μ ν©λλ€.
x0 ~ x30(64λΉνΈ) = w0 ~ w30(32λΉνΈ) μ 32λΉνΈμ 64λΉνΈ νκ²½μμ νννλ μ°¨μ΄μΌλΏ λμΌνλ€κ³ 보μλ©΄ λ©λλ€.
μμ ν μ½λλ₯Ό λ€μ μ¬μ€νν΄λ³΄λ©΄ x8(w8)μ κ°μ΄ 0μΌλ‘ μμ λ κ²μ νμΈν μ μμ΅λλ€. μ΄λ‘μ¨ true λ‘μ§μΈ κ²½μ°μ LAB_100195 da8λ‘ μ΄λνκ² λμ΄ "Device_is_Not_Jailbreak"μ΄ μΆλ ₯λκ² λ©λλ€.
μ±κ³΅μ μΌλ‘ νμ₯μ μ°νν κ²μ νμΈν μ μμ΅λλ€.
'MOBILE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android] κ°μ λͺ¨λ°μΌ νκ²½(Nox) κ΅¬μΆ (0) | 2021.02.01 |
---|---|
[iOS] μμ λ IPAνμΌ μλͺ (0) | 2021.01.30 |
[iOS]Jailbreak νμ§ μ°ν(Frida) (0) | 2021.01.24 |
[iOS] Keychain Dumper (0) | 2021.01.20 |
[iOS] νμ₯ νκ²½μμ iPA μ€μΉ (0) | 2020.12.23 |