Skip to content

Commit

Permalink
feat(主设置): 新增测试功能 自定义IMEI
Browse files Browse the repository at this point in the history
Signed-off-by: xihan123 <srxqzxs@vip.qq.com>
  • Loading branch information
xihan123 committed Mar 29, 2024
1 parent f5a113d commit 5212b38
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 32 deletions.
82 changes: 63 additions & 19 deletions app/src/main/kotlin/cn/xihan/qdds/HookEntry.kt
Expand Up @@ -17,6 +17,7 @@ import com.highcapable.yukihookapi.hook.factory.registerModuleAppActivities
import com.highcapable.yukihookapi.hook.log.YLog
import com.highcapable.yukihookapi.hook.param.PackageParam
import com.highcapable.yukihookapi.hook.type.android.BundleClass
import com.highcapable.yukihookapi.hook.type.android.ContextClass
import com.highcapable.yukihookapi.hook.type.java.IntType
import com.highcapable.yukihookapi.hook.type.java.ListClass
import com.highcapable.yukihookapi.hook.type.java.LongType
Expand Down Expand Up @@ -140,8 +141,8 @@ class HookEntry : IYukiHookXposedInit {
oldDailyRead(versionCode, bridge)
}

if (optionEntity.mainOption.enableDefaultImei) {
defaultIMEI(versionCode, bridge)
if (optionEntity.mainOption.enableCustomIMEI) {
customIMEI(versionCode, bridge)
}

if (optionEntity.cookieOption.enableCookie) {
Expand Down Expand Up @@ -717,31 +718,74 @@ fun PackageParam.oldDailyRead(versionCode: Int, bridge: DexKitBridge) {
}

/**
* 启用默认imei
* 启用自定义imei
* @since 7.9.334-1196 ~ 1299
* @param [versionCode] 版本代码
*/
fun PackageParam.defaultIMEI(versionCode: Int, bridge: DexKitBridge) {
fun PackageParam.customIMEI(versionCode: Int, bridge: DexKitBridge) {
when (versionCode) {
in 1196..1299 -> {
bridge.findClass {
searchPackages = listOf("com.qidian.common.lib.util")
matcher {
usingStrings = listOf("SIMSERIAL_release", "imei_release", "imei2_release")
bridge.apply {

findClass {
searchPackages = listOf("com.tencent.nywbeacon.qimei")
matcher {
usingStrings = listOf(
"QIMEI_DENGTA",
"qimei_v2",
"Q_V3",
"local_qimei use qimei local: null"
)
}
}.firstNotNullOfOrNull { classData ->
classData.findMethod {
matcher {
returnType = "java.lang.String"
usingStrings =
listOf(
"QIMEI_DENGTA",
"qimei_v2",
"Q_V3",
"local_qimei use qimei local: null"
)
}
}.firstNotNullOfOrNull { methodData ->
methodData.className.toClass().method {
name = methodData.methodName
param(ContextClass)
returnType = StringClass
}.hook()
.replaceTo("""{"A3":"${optionEntity.mainOption.qimei}","A153":"${optionEntity.mainOption.qimei}"}""")
}
}
}.firstNotNullOfOrNull { classData ->
classData.findMethod {

findClass {
matcher {
modifiers = Modifier.PUBLIC
returnType = "java.lang.String"
usingStrings = listOf("phone")
usingStrings = listOf(
"HUAWEI_OAID",
"0821CAAD409B8402",
"BEACON_QIMEI",
"BEACON_QIMEI_36"
)
}
}.firstNotNullOfOrNull { classData ->
classData.findMethod {
matcher {
returnType = "java.lang.String"
usingStrings =
listOf(
"BEACON_QIMEI",
"BEACON_QIMEI_36"
)
}
}.forEach { methodData ->
methodData.className.toClass().method {
name = methodData.methodName
emptyParam()
returnType = StringClass
}.hook()
.replaceTo(optionEntity.mainOption.qimei)
}
}.forEach { methodData ->
methodData.className.toClass().method {
name = methodData.methodName
emptyParam()
returnType = StringClass
}.hook().replaceTo("cc51cce4aafd4d0e0fd61031100014816b02")
}
}
}
Expand Down
23 changes: 20 additions & 3 deletions app/src/main/kotlin/cn/xihan/qdds/MainActivity.kt
Expand Up @@ -381,12 +381,29 @@ class MainActivity : ModuleAppCompatActivity() {
optionEntity.mainOption.enableOldDailyRead = it
})

ItemWithSwitch(text = "启用默认IMEI",
val enableCustomIMEI =
rememberMutableStateOf(value = optionEntity.mainOption.enableCustomIMEI)

ItemWithSwitch(text = "启用自定义IMEI",
modifier = itemModifier,
checked = rememberMutableStateOf(value = optionEntity.mainOption.enableDefaultImei),
checked = enableCustomIMEI,
onCheckedChange = {
optionEntity.mainOption.enableDefaultImei = it
optionEntity.mainOption.enableCustomIMEI = it
})

if (enableCustomIMEI.value) {
val defaultQImei =
rememberMutableStateOf(value = optionEntity.mainOption.qimei)

ItemWithEditText(title = "QIMEI", text = defaultQImei, onTextChange = {
if (it.isNotBlank()) {
runAndCatch {
optionEntity.mainOption.qimei = it
}
}
})
}


ItemWithSwitch(text = "启用抓取cookie",
modifier = itemModifier,
Expand Down
17 changes: 7 additions & 10 deletions app/src/main/kotlin/cn/xihan/qdds/Option.kt
Expand Up @@ -541,23 +541,19 @@ data class OptionEntity(
SelectedModel("首次安装分析", true),
SelectedModel("异步主GDT广告任务|com.qidian.QDReader.start.AsyncMainGDTTask", true),
SelectedModel(
"异步主游戏广告SDK任务|com.qidian.QDReader.start.AsyncMainGameADSDKTask",
true
"异步主游戏广告SDK任务|com.qidian.QDReader.start.AsyncMainGameADSDKTask", true
),
SelectedModel(
"异步主游戏下载任务|com.qidian.QDReader.start.AsyncMainGameDownloadTask",
true
"异步主游戏下载任务|com.qidian.QDReader.start.AsyncMainGameDownloadTask", true
),
SelectedModel(
"异步子屏幕截图任务|com.qidian.QDReader.start.AsyncChildScreenShotTask",
true
"异步子屏幕截图任务|com.qidian.QDReader.start.AsyncChildScreenShotTask", true
),
SelectedModel("异步主用户操作任务|com.qidian.QDReader.start.AsyncMainUserActionTask", true),
SelectedModel("异步有赞-SDK任务|com.qidian.QDReader.start.AsyncChildYouZanTask", true),
SelectedModel("异步初始化KNOBS-SDK任务|com.qidian.QDReader.start.AsyncInitKnobsTask", true),
SelectedModel(
"异步子更新设备任务|com.qidian.QDReader.start.AsyncChildUpdateDeviceTask",
true
"异步子更新设备任务|com.qidian.QDReader.start.AsyncChildUpdateDeviceTask", true
),
SelectedModel("异步子崩溃任务|com.qidian.QDReader.start.AsyncChildCrashTask", true),
SelectedModel("异步子点播上传任务|com.qidian.QDReader.start.AsyncChildVODUploadTask", true),
Expand Down Expand Up @@ -595,7 +591,7 @@ data class OptionEntity(
* @param enableHideAppIcon 启用隐藏应用图标
* @param enableExportEmoji 启用导出表情包
* @param enableOldDailyRead 启用旧的每日阅读
* @param enableDefaultImei 启用默认IMEI
* @param enableCustomIMEI 启用自定义IMEI
*/
@Keep
data class MainOption(
Expand All @@ -608,7 +604,8 @@ data class OptionEntity(
var enableExportEmoji: Boolean = false,
var enableOldDailyRead: Boolean = false,
var enableStartCheckingPermissions: Boolean = true,
var enableDefaultImei: Boolean = true
var enableCustomIMEI: Boolean = true,
var qimei: String = ""
)

@Keep
Expand Down

0 comments on commit 5212b38

Please sign in to comment.