菜鸟教程小白 发表于 2022-12-12 09:31:57

ios - WiFiManager.bundle WiFiManager 在我尝试使用 dlopen、iOS 加载时返回 NULL


                                            <p><p>对于私有(private)用途,我尝试使用以下代码加载 WiFi 管理器 (<strong>iOS 6.1</strong>):</p>

<pre><code>    airportHandle = 0;
    libHandle = 0;

    libHandle = dlopen(
                     &#34;/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager&#34;
                     //&#34;/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfifuration&#34;
                     , RTLD_LAZY);

    if(libHandle != 0)
    {
      disassociate    = (int (*)())dlsym(libHandle,   &#34;Apple80211Disassociate&#34;);
      open            = (int (*)(void*))dlsym(libHandle,&#34;Apple80211Open&#34;);
      bind            = (int (*)(void*, NSString*))dlsym(libHandle,   &#34;Apple80211BindToInterface&#34;);
      close         = (int (*)(void*))dlsym(libHandle,&#34;Apple80211Close&#34;);
      scan            = (int (*)(void*, NSArray**, void*))dlsym(libHandle,    &#34;Apple80211Scan&#34;);
      associate       = (int (*)(void*, void*, NSString*))dlsym(libHandle,    &#34;Apple80211Associate&#34;);
      info            = (int (*)(void*, NSDictionary**))dlsym(libHandle,&#34;Apple80211GetInfoCopy&#34;);
      GetPower      = (int (*)(void*, char*))dlsym(libHandle,   &#34;Apple80211GetPower&#34;);
      SetPower      = (int (*)(void*, char))dlsym(libHandle,    &#34;Apple80211SetPower&#34;);
      listinfo      = (int (*)(void*, NSDictionary**))dlsym(libHandle,&#34;Apple80211GetIfListCopy&#34;);

      open(&amp;airportHandle);
      bind(airportHandle, @&#34;en0&#34;);
    }
</code></pre>

<p>但是 <code>libHandle</code> 是 <code>NULL</code>。</p>

<p>我是否需要使用越狱设备或者没有办法只使用<code>Private API</code>。</p>

<p>谢谢,</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这不是一个答案,而是一个方向。</p>

<p>我记得,Apple 多次移动 WiFi API(从一个框架到另一个框架)。
所以,这条路径(“/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager”)很可能已经过时了。</p>

<p>即使在未越狱的 iOS 设备上,您也应该能够使用 dlopen 并获得句柄。所以,这不是问题。但是,我不确定您提到的这些 API 是否不受权利保护。</p>

<p>如果你有 iOS 6 模拟器,我建议你去那里尝试 grepr 并找到这些 API 所在的位置。</p>

<p>顺便说一句。看看这个问题。他声称他的代码适用于 iOS 6 - <a href="https://stackoverflow.com/questions/13541993/iphone-802-11-scan" rel="noreferrer noopener nofollow">Iphone 802.11 Scan</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - WiFiManager.bundle WiFiManager 在我尝试使用 dlopen、iOS 加载时返回 NULL,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23245276/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23245276/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - WiFiManager.bundle WiFiManager 在我尝试使用 dlopen、iOS 加载时返回 NULL