马甲包被认为雷同打回处理办法:
1.应用内容作出区别:
因为把整个应用替换资源代价太大,那尽量在启动,登陆,主界面作出很大差异,能让审核人员不会直观上认为是雷同。
2.代码混淆:
不同的马甲包在基类中定义不同的成员方法和成员变量。具体做法,每一个马甲包定义一个宏,比如:马甲包1(target->build setting->preprocessor macros ->定一个 LOGO_ID = 1),这样编译时不同的包将编译成不同的基类,子类也就会不同,整个包也就不会被认为二进制雷同。混淆代码的生成,可以写个脚本批量生成。
///
应用代码。。。
///
#if defined (LOGO_ID == 1)
void zsclhntugg61_1_Base303(int s21_303){ s21_303 = 59; }
void lrecgkqdaou0_2_Base303(float rag31_303, short pwme62_303, short vkwa73_303, short x84_303){ rag31_303 = 45; pwme62_303 = 96; vkwa73_303 = 245; x84_303 = 116; }
void qyihgkbmpgvc49_3_Base303(int l51_303, long i92_303){ l51_303 = 96; i92_303 = 94; }
void rpyitvg6_4_Base303(byte phe01_303){ phe01_303 = 72; }
void qdpgeswrio34_5_Base303(int csuid01_303, long ryhal52_303, double fdmpy33_303){ csuid01_303 = 145; ryhal52_303 = 214; fdmpy33_303 = 12; }
void wrpfsgk0_6_Base303(short rqlgf21_303, short g42_303){ rqlgf21_303 = 220; g42_303 = 234; }
int m_rswxal62_303_1; short m_ghd9_303_2; long m_ulzo07_303_3; short m_isvdc0_303_4;
#elif (LOGO_ID == 2)
void eybomxaz37_1_Base304(int b81_304){ b81_304 = 154; }
void gskcutrlbem3_2_Base304(short vgi51_304, short nvgyu12_304, float dczun73_304, byte difml14_304, byte inhu65_304){ vgi51_304 = 251; nvgyu12_304 = 31; dczun73_304 = 111; difml14_304 = 88; inhu65_304 = 175; }
void cvkfts51_3_Base304(long zhb31_304, double gvrs12_304, long fwk13_304){ zhb31_304 = 177; gvrs12_304 = 32; fwk13_304 = 227; }
void acwtg3_4_Base304(byte agq71_304, short bc02_304, float xt53_304){ agq71_304 = 98; bc02_304 = 23; xt53_304 = 210; }
int m_lxes36_304_1; short m_bqfip5_304_2; int m_chgfti98_304_3; byte m_rke0_304_4; int m_gqfa86_304_5; byte m_ewkga6_304_6;
#endif
///
应用代码。。。
///
//
//批量生成的lua脚本(事例)
local l_type_tb = {"int", "float", "char", "double"}
local function func_ex( num )
l_str = ""
for i=1, num do
l_str = l_str .. " " .. l_type_tb[math.random(1,#l_type_tb)] .. " a".. i .. "=" .. math.random(100) .. ";\n"
end
return l_str
end
local function get_func_name()
local c = ""
local l_max = math.random(2, 6)
for i=1, l_max do
-- 65 90
-- 97 122
if math.random(2) == 1 then
c = c .. string.char(math.random(65, 90))
else
c = c .. string.char(math.random(97, 122))
end
end
return c
end
local function call_func()
{
local l_str =
[[
#ifdef LOGO_ID
#if (LOGO_ID == 1)
void func(void){
}]]
for i=2, 400 do
local l_type_str = "int"
for j=1, math.random(1,4) do
local l_type = l_type_tb[math.random(1,#l_type_tb)]
l_type_str = l_type_str .. ", " .. l_type
end
l_str = l_str .. "\n#elif (LOGO_ID == " .. i .. ")\n" ..
" void " .. get_func_name() .. i .."(" .. l_type_str .. "){\n" .. func_ex(math.random(10)) .. " }"
end
l_str = l_str .. "\n#endif\n#endif"
local l_file = io.open("./1.txt", "w+")
l_file:write(l_str)
l_file:close()
end
call_func();
网友评论
* 2. 3 Performance: Accurate Metadata
* We discovered that your app contains hidden features. Specifically, it would be appropriate to remove all code obfuscation and selector mangling or to explain in detail the purpose of its inclusion before resubmitting for review