馬甲包被認(rèn)為雷同打回處理辦法:
1.應(yīng)用內(nèi)容作出區(qū)別:
因?yàn)榘颜麄€(gè)應(yīng)用替換資源代價(jià)太大,那盡量在啟動(dòng),登陸,主界面作出很大差異,能讓審核人員不會(huì)直觀上認(rèn)為是雷同。
2.代碼混淆:
不同的馬甲包在基類(lèi)中定義不同的成員方法和成員變量。具體做法,每一個(gè)馬甲包定義一個(gè)宏,比如:馬甲包1(target->build setting->preprocessor macros ->定一個(gè) LOGO_ID = 1),這樣編譯時(shí)不同的包將編譯成不同的基類(lèi),子類(lèi)也就會(huì)不同,整個(gè)包也就不會(huì)被認(rèn)為二進(jìn)制雷同?;煜a的生成,可以寫(xiě)個(gè)腳本批量生成。
///
應(yīng)用代碼。。。
///
#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
///
應(yīng)用代碼。。。
///
//
//批量生成的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();