李恒道 发表于 2022-12-14 23:06:34

【嶺上開花】油猴实战过人脸之补APP环境

# 前文
其实封包过明显更简单
但是我就是要补出来环境,嘿,就是玩
我要魔改出来一个自动答题过人脸的变态考试专版APP
![图片.png](data/attachment/forum/202212/14/224958ux9tkho76x6oqnxo.png)
# 实战目标
某起
# 开始
首先点击按钮提示
![图片.png](data/attachment/forum/202212/14/225054q88giilitlglip1i.png)
直接源代码里搜索一下
![图片.png](data/attachment/forum/202212/14/225213plic4ch4w242x23m.png)
发现通过m.f判断
因为是webpack打包,往上找m
![图片.png](data/attachment/forum/202212/14/225237znz5p993gicnc05d.png)
m来自ba39
直接打断往里追或者搜索ba39都可以
找到了函数,前方的n.d是webpack的环境定义头,直接忽略,发现m.f的f来自于i
![图片.png](data/attachment/forum/202212/14/225311izb7b65y2kbn569g.png)
我们继续找i
![图片.png](data/attachment/forum/202212/14/225355ypspkfbfdpk1j9ff.png)
发现i来自763d
继续找763d
发现这个函数的f取决于变量d
![图片.png](data/attachment/forum/202212/14/225526cfmzgk8cpujj0cvq.png)
而d在下方,默认为假,下方有两个赋值d的,一个是函数,一个是直接调用,我们先忽略函数,直接看调用的s
![图片.png](data/attachment/forum/202212/14/225606ada3h2t51347tvet.png)
调用一下打个断点往里追
找到了
```js
      function s(e) {
            var t = arguments.length > 1 && void 0 !== arguments ? arguments : {}
            , n = arguments.length > 2 ? arguments : void 0;
            o((function(i) {
                i.callHandler(e, t, (function(e) {
                  var t = e;
                  if ("string" == typeof e)
                        try {
                            t = JSON.parse(e)
                        } catch (e) {}
                  n && n(t)
                }
                ))
            }
            ))
      }
```
e是调用事件名,t是变量,n是回调函数
我们调用了o来回调执行函数,那我们去看看o
```js
      function o(e) {
            if (window.WebViewJavascriptBridge)
                e(window.WebViewJavascriptBridge);
            else if (i()) {
                if (window.WVJBCallbacks)
                  return window.WVJBCallbacks.push(e),
                  !1;
                window.WVJBCallbacks = ;
                var t = document.createElement("iframe");
                t.style.display = "none",
                t.src = "wvjbscheme://__BRIDGE_LOADED__",
                document.documentElement.appendChild(t),
                setTimeout((function() {
                  document.documentElement.removeChild(t)
                }
                ), 0)
            } else
                a() && document.addEventListener("WebViewJavascriptBridgeReady", (function() {
                  e(window.WebViewJavascriptBridge)
                }
                ), !1)
      }
```
这里可以看到在检测各种桥,我们来搞个最基本的
window.WebViewJavascriptBridge吧
调用e(window.WebViewJavascriptBridge);会把我们的函数传进去
去回调
```js
                i.callHandler(e, t, (function(e) {
                  var t = e;
                  if ("string" == typeof e)
                        try {
                            t = JSON.parse(e)
                        } catch (e) {}
                  n && n(t)
                }
```
那我们就需要实现callHandler函数,检测是否是getRuntimeEnvironment
如果是的话就去回调第三个参数,第三个参数是个函数,接受一个e
我们应该传入一个对象
然后会对n传入这个对象
n则是
```
(function(e) {
            d = "app" === e.platform
      }
      )
```
代表我们传入的对象必须包含platform,并且是app
开始
直接上油猴
```js
window.WebViewJavascriptBridge = {
    callHandler: (name, obj, callback) => {
       xxxxx
       防恶意利用删除代码
       balabala

    }
}
```
就会发现我们已经过了APP功能性检测
![图片.png](data/attachment/forum/202212/14/230553k6bcweuwdzgezewb.png)
# 结语
撒花~

极品小猫 发表于 2022-12-16 11:49:51

上网址实操才是王道……强烈要求道哥出视频{:4_100:}

李恒道 发表于 2022-12-16 14:50:40

极品小猫 发表于 2022-12-16 11:49
上网址实操才是王道……强烈要求道哥出视频
主要我用的自己账号...借不到其他人号演示
呜呜呜
最近还在继续研究这个
感觉快完成了
这类APP式的可以直接down下来代码
然后修改作弊部分挪进去之后手动打包出来一个apk
或者直接基于原来的改
搞出来的玩应几乎可以拿着线下作弊了
-------------------------------------------------------
做的时候不禁还在思考
可能随着时代发展,逆向的成本也会逐渐降低
过去如果想搞exe需要学汇编,apk要搞il
现在大家都喜欢玩这种网页包裹的
严重降低了门槛
以后感觉很可能会在这方面为了安全性重新卷一遍轮子啥的...

463223674 发表于 2023-2-26 23:42:02

正好有这个需求。道哥v我,有偿:ybg6420

hu0803 发表于 2023-12-16 04:23:03

有偿hpg0612 能过人脸的加我
页: [1]
查看完整版本: 【嶺上開花】油猴实战过人脸之补APP环境