chomper icon indicating copy to clipboard operation
chomper copied to clipboard

函数调用后的长度异常的问题

Open Yiiff opened this issue 1 year ago • 1 comments

chomper主动调用的函数生成结果的长度与原始函数生成的结果长度有差别,chomper能否调试?

Yiiff avatar May 20 '24 02:05 Yiiff

这种情况一般是走了异常分支,可以在调用 load_module 时,设置参数 trace_inst=True,这样会打印所有执行的指令,应该可以排查出哪个关键步骤执行的分支不正确。

sledgeh4w avatar May 20 '24 17:05 sledgeh4w

id __cdecl -[APayProcessor netUtilDic:](APayProcessor *self, SEL a2, bool a3) { __int128 v3; // q0 __int128 v4; // q1 NSDictionary *v5; // x0 __int128 v7; // [xsp+0h] [xbp-80h] BYREF __CFString *v8; // [xsp+10h] [xbp-70h] __int128 v9; // [xsp+20h] [xbp-60h] BYREF __CFString *v10; // [xsp+30h] [xbp-50h] __int128 v11; // [xsp+40h] [xbp-40h] BYREF __CFString *v12; // [xsp+50h] [xbp-30h] __int128 v13; // [xsp+60h] [xbp-20h] BYREF __CFString *v14; // [xsp+70h] [xbp-10h]

*(_QWORD *)&v3 = CFSTR("namespace"); *((_QWORD *)&v3 + 1) = CFSTR("api_version"); *(_QWORD *)&v4 = CFSTR("com.alipay.mobilecashier"); if ( a3 ) { *((_QWORD *)&v4 + 1) = CFSTR("5.0.0"); v11 = v3; v13 = v4; v12 = CFSTR("api_name"); v14 = CFSTR("com.alipay.mcpay"); v5 = +[NSDictionary dictionaryWithObjects:forKeys:count:]( &OBJC_CLASS___NSDictionary, "dictionaryWithObjects:forKeys:count:", &v13, &v11, 3LL); } else { *((_QWORD *)&v4 + 1) = CFSTR("4.9.0"); v7 = v3; v9 = v4; v8 = CFSTR("api_name"); v10 = CFSTR("com.alipay.mcpay"); v5 = +[NSDictionary dictionaryWithObjects:forKeys:count:]( &OBJC_CLASS___NSDictionary, "dictionaryWithObjects:forKeys:count:", &v9, &v7, 3LL); } return objc_autoreleaseReturnValue(objc_retainAutoreleasedReturnValue(v5)); }

a3=false 能否提供一个实例方法的调用例子? 最终打印出正确的NSDictionary内容~

jzbb99 avatar Nov 10 '25 10:11 jzbb99