有一客戶找到我,說能不能把APP首頁的底部多余界面去掉。想要去除安卓應(yīng)用軟件中的內(nèi)容,需要對(duì)APP逆向進(jìn)行修改再打包。提取APK包,點(diǎn)擊apk文件,點(diǎn)擊查看反編譯apk。搜索關(guān)鍵字。這里關(guān)鍵字都是后端接口返回,所以說關(guān)鍵字搜索無果。在assets資源文件下找到Index.html首頁一頓操作排查,根據(jù)客戶提供的頁面信息,最終鎖定是home.html文件,在www目錄中。<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>微友助手</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="../../css/mui.min.css">
<link rel="stylesheet" type="text/css" href="../../css/index.css" />
...省略style元素
<script src="../../js/mui.min.js"></script>
<script src="../../js/app.js"></script>
<script type="text/javascript" charset="utf-8">
(function($, doc) {
$.init({
swipeBack: false //啟用右滑關(guān)閉功能
});
$.plusReady(function() {
console.log('homeready');
plus.navigator.setStatusBarBackground('#FFFFFF');
plus.navigator.setStatusBarStyle('dark');
var userDatas = app.getDatas('$userDatas');
if(userDatas['account'])app.bindAliasAndTag(userDatas['account'],[userDatas['account']]);
var self = plus.webview.currentWebview();
doc.getElementById('bar').innerHTML = userDatas['account']?userDatas['account']:'';
doc.getElementById('copy_url').addEventListener('tap', function(event) {
app.copyToClipboard("http://yqlm.jisubianxian.com/web");
mui.toast('復(fù)制成功');
});
var home_data = app.getHomeData(userDatas.token, function(datas, zt) {
if(zt==true){
doc.getElementById('ke_use_count').innerHTML = datas['ke_use_count']?datas['ke_use_count']:'0';
doc.getElementById('intro').innerHTML = datas['intro']?datas['intro']:'';
if(datas['foot']==true){
// doc.getElementById('foot').style.display='';
}
if(datas['rj_logo'] && datas['rj_logo'].length>0){
var rj_logo = datas['rj_logo'];
//console.log(dd.lunbo.length);
var rj_logo_str = '';
for (i=0;i<rj_logo.length;i++){
rj_logo_str +='<li>'+
' <img src="'+rj_logo[i]+'" style="width: 6vw;height: 6vw;border-radius: 5vw;">'+
'</li>';
}
//console.log(products_str);
doc.getElementById('rj_logo').innerHTML = rj_logo_str;
}
if(datas['doc_tool'] && datas['doc_tool'].length>0){
var doc_tool = datas['doc_tool'];
//console.log(dd.lunbo.length);
var doc_tool_str = '';
for (i=0;i<doc_tool.length;i++){
doc_tool_str +='<li>'+
'<a onclick="javascript:app.openXy(\''+doc_tool[i]['url']+'\')">'+
' <img src="'+doc_tool[i]['img']+'" style="border-radius: 0;">'+
' <span style="color: #8f8f94;">'+doc_tool[i]['name']+'</span>'+
'</a>'+
'</li>';
}
doc.getElementById('doc_tool').innerHTML = doc_tool_str;
}
}
});
document.querySelector('#add_man_js').addEventListener('tap', function(e) {
console.log('開始添加');
plus.contacts.getAddressBook( plus.contacts.ADDRESSBOOK_PHONE, function( addressbook ) {
app.get_tels_list(userDatas.token, function(dd, status) {
if(status== false){
mui.alert(dd);
}else{
if(typeof(dd)=='string')dd = JSON.parse(dd);
var datas = dd['data'];
for(var i=0;i<datas.length;++i){
console.log('name:'+datas[i].name+'mobile:'+datas[i].mobile+'remark:'+datas[i].remark);
// 向通訊錄中添加聯(lián)系人
var contact = addressbook.create();
contact.name = {givenName:datas[i].name};
contact.phoneNumbers = [{type:"mobile",value:datas[i].mobile,preferred:true}];
contact.note=datas[i].remark;
//contact.categories ={type:"company",value:"神碩"};
//contact.organizations={type:"company",value:"神碩"};
contact.save();
};
console.log(dd['ke_use_count']);
document.getElementById('ke_use_count').innerHTML = dd['ke_use_count']?dd['ke_use_count']:'0';
//添加成功后更新服務(wù)端的數(shù)據(jù)狀態(tài)和可用數(shù)量
mui.alert('批量導(dǎo)入成功!已隨機(jī)導(dǎo)入1-4個(gè)數(shù)據(jù),請(qǐng)打開客戶端添加或關(guān)注新朋友。');
}
});
}, function ( e ) {
mui.alert( "獲取通訊錄失敗: " + e.message );
} );
});
document.querySelector('#log_out_js').addEventListener('tap', function(e) {
mui.confirm('確認(rèn)退出程序?', '',['取消','確定'], function(e) {
if (e.index == 1) {
userDatas['token']='';
app.setDatas('$userDatas', userDatas);
plus.runtime.restart();
} else {
//console.log('你點(diǎn)擊了取消');
}
});
});
setTimeout(function() {
plus.navigator.closeSplashscreen();
}, 1000);
console.log('homereadyover');
});
}(mui, document));
</script>
</head>
<body style="background-image: url('../../images/home.png'); background-position: center center;background-repeat: no-repeat;background-attachment: fixed;background-size: cover;height: 100%;">
...省略部分內(nèi)容
<div class="report" >
<a id ="add_man_js">+批量導(dǎo)入通訊錄</a>
</div>
<div class="member_c">
<ul class="ul_c" id="doc_tool">
</ul>
</div>
<footer id='foot'>
<p style="font-size: .7rem;">管理員給多個(gè)app客戶端【分配數(shù)據(jù)】請(qǐng)?jiān)L問:</p>
<p style="font-size: .7rem;color:#0FB923;">http://yqlm.jisubianxian.com/web</p>
<p style="font-size: .7rem;">使用電腦瀏覽器打開 <a style="color:blue;" id="copy_url"> <img src="../../images/8.png" style="width:20px;height:20px">復(fù)制網(wǎng)址</a></p>
</footer>
<div class="good_bot">
<a id ="log_out_js">退 出 系 統(tǒng)</a>
</div>
</body>
</html>
有js基礎(chǔ)的不難看到,頁面是通過頁面加載完成后調(diào)用后端接口返回得到的信息,再動(dòng)態(tài)添加元素渲染。這里直接通過style樣式標(biāo)簽直接把底部元素隱藏掉即可。修改home.xml文件保存后退出編輯頁面,選擇自動(dòng)簽名,確定更新。返回到apk界面。
閱讀原文:原文鏈接
該文章在 2025/3/14 9:39:43 編輯過