PageSourceSearch

https://sunny250.github.io/2021/03/24/APP_%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8A%93%E5%8C%85/

html sunny250.github.io collected 2026-10-03 10:00:18 UTC 12,267 bytes, 350 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <meta charset="utf-8" />
6   
7  <meta name="keywords" content="blog" />
8   
9  <meta name="description" content="sunny250`s blog" />
10  
11  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
12  <title>
13    APP/小程序抓包 |  sunny250`s blog
14  </title>
15  
16  <link rel="shortcut icon" href="/favicon.ico" />
17  
18  
19<link rel="stylesheet" href="/css/style.css">
20  
21<script src="/js/pace.min.js"></script>
21
22
23
24  
25
26  
27
28<meta name="generator" content="Hexo 4.2.1"><link rel="alternate" href="/atom.xml" title="sunny250`s blog" type="application/atom+xml">
29</head>
30
31</html>
32
33<body>
34  <div id="app">
35    <main class="content">
36      <section class="outer">
37  <article id="post-APP_小程序抓包" class="article article-type-post" itemscope
38  itemprop="blogPost" data-scroll-reveal>
39
40  <div class="article-inner">
41    
42    <header class="article-header">
43       
44<h1 class="article-title sea-center" style="border-left:0" itemprop="name">
45  APP/小程序抓包
46</h1>
47  
48
49    </header>
50    
51
52    
53    <div class="article-meta">
54      <a href="/2021/03/24/APP_%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8A%93%E5%8C%85/" class="article-date">
55  <time datetime="2021-03-24T08:03:30.000Z" itemprop="datePublished">2021-03-24</time>
56</a>
57      
58    </div>
59    
60
61    
62    
63    <div class="tocbot"></div>
64
65
66
67
68
69    
70
71    <div class="article-entry" itemprop="articleBody">
72      
73
74
75      
76
77      
78      <h1 id="0x00前言"><a href="#0x00前言" class="headerlink" title="0x00前言"></a>0x00前言</h1><p>在测试小程序或app总会遇到抓不到包的情况,也听很多大佬说过,抓不到包使用低版本安卓。小程序比较好解决,毕竟是在微信上运行的程序,可以加的东西比较少;独立的app可以加的东西就很多了,例如添加非标准的http协议,如可自定义的的http模块okhttp;或者证书校验;独立函数校验。这就分很多中情况了。</p>
79<a id="more"></a>
80<h1 id="0x01-安卓7-0以上不能抓包根源"><a href="#0x01-安卓7-0以上不能抓包根源" class="headerlink" title="0x01 安卓7.0以上不能抓包根源"></a>0x01 安卓7.0以上不能抓包根源</h1><p>在 Android7.0 及以上的系统中,每个应用可以定义自己的可信 CA 集集。</p>
81<p>默认情况下,应用只会信任系统预装的 CA 证书,而不会信任用户安装的 CA 证书。</p>
82<p>而回想我们抓包的过程,无论是 fiddler 还是 Charles,想抓 https,都必须手机安装对应的证书,通过 fiddler/Charles 安装的证书恰恰正属于用户安装的 CA 证书,因此会被视作不安全的证书。</p>
83<h3 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法"></a>解决办法</h3><p>把手机root,然后安装证书到系统证书目录下<br>系统证书的目录是:/system/etc/security/cacerts/</p>
84<p>每个证书的命名规则为:<Certificate_Hash>.<Number></p>
85<p>Certificate_Hash表示证书文件的 hash 值,Number是为了防止证书文件的 hash 值一致而增加的后缀;</p>
86<p>证书的 hash 值可以由命令计算出来,在终端输入openssl x509 -subject_hash_old -in <Certificate_File>,其中Certificate_File为证书路径,将证书重命名为hash.0放入系统证书目录,之后你就可以正常抓包了。</p>
87<h1 id="0x02小程序抓包"><a href="#0x02小程序抓包" class="headerlink" title="0x02小程序抓包"></a>0x02小程序抓包</h1><ol>
88<li>安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书</li>
89<li>安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书</li>
90<li>安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任它自己配置的证书列表<br>解决方法一:使用苹果系统<br>解决方法二:使用低版本安卓<br>解决方法三:root后安装证书到系统证书处,使用低版本微信<br>解决方法四:hook微信</li>
91</ol>
92<p>最简单的方法就是使用苹果系统进行抓包或者使用低版本安卓</p>
93<h1 id="0x03-app无法抓包"><a href="#0x03-app无法抓包" class="headerlink" title="0x03 app无法抓包"></a>0x03 app无法抓包</h1><p>目前大多使用了各种手段以确保安全。首先要解决抓包问题,然后还要解决各种解密问题。<br>根据app对证书的处理分为以下几种方式</p>
94<ol>
95<li>使用自定义http模块,例如okhttp,不实现其http代理功能,或者不完整的http代理功能</li>
96<li>客户端对服务器的证书做校验</li>
97<li>在客户端代码层对证书做校验</li>
98<li>服务器对客户端证书做校验</li>
99<li>在代码层判断是否启用了vpn</li>
100</ol>
101<p>以上5中方法是对于http(s)的抓包,目前大多数app也都是这几种进行组合。<br>下面给出解决办法</p>
102<ol>
103<li><p>使用vpn软件,将所有数据包走vpn通道<br> 在bp或者其他抓包软件中设置好代理后,使用Postern输入ip,端口进行连接<br> <img src="/pic/upload_87e5e7106fcdc309a733a538e2b59408.png" alt=""><br> <img src="/pic/upload_7a16234ba09a4795d36027a875450a15.png" alt=""></p>
104</li>
105<li><p>将抓包软件的证书导入到系统中<br> 上面说到了如何将证书导入到系统证书中</p>
106</li>
107<li><p>hook校验证书的函数,使其失效(又被称为ssl pinning)<br> 使用frida,hook验证函数,也可以直接使用objection<br> <code>#android sslpinning disable</code><br> <img src="/pic/upload_12ad68db8bdd3cdd123ea918df0259c0.png" alt=""></p>
108</li>
109<li><p>将抓包软件导入app的证书<br> 直接抓包会出现400错误<br> <img src="/pic/upload_7de4d19f4c961863eacc726fad44a1f7.png" alt=""></p>
110<p>
110 使用jadx反编译后,一般直接搜索client或者p12(可能有些是其他格式)就可以搜索到<br> <img src="/pic/upload_d3fb09d32bc128cc173d94917d6680f0.png" alt=""><br> 在app未启动时,使用objection抓取密码,大多数情况下可用<br> <code>#objection -g com.boqianyi.havefun explore --startup-command &#39;android hooking watch class_method  java.security.KeyStore.load --dump-args e --dump-return&#39;</code><br> <img src="/pic/upload_9ebde0412f6f3bd6c40387efb564afbd.png" alt=""><br> 然后选择对应对证书格式导入<br> <img src="/pic/upload_ae8208f5b8d992f142ece12f6f05ad04.png" alt=""><br> 最后选择证书,输入密码就可以愉快的抓包了<br> <img src="/pic/upload_bde30b9f8ee0772accb2fa7076a85966.png" alt=""></p>
111</li>
112<li><p>hook校验函数,使其失效 </p>
113</li>
114</ol>
115<h1 id="0x04参考文章"><a href="#0x04参考文章" class="headerlink" title="0x04参考文章"></a>0x04参考文章</h1><p><a href="https://www.anquanke.com/post/id/197657" target="_blank" rel="noopener">https://www.anquanke.com/post/id/197657</a><br><a href="https://testerhome.com/articles/17746" target="_blank" rel="noopener">https://testerhome.com/articles/17746</a></p>
116
117      
118      <!-- 打赏 -->
119      
120    </div>
121    <footer class="article-footer">
122      <a data-url="https://sunny250.github.io/2021/03/24/APP_%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8A%93%E5%8C%85/" data-id="cmaz7j165000d5cq28in92ik4"
123        class="article-share-link">分享</a>
124      
125    </footer>
126
127  </div>
128
129  
130  
131  <nav class="article-nav">
132    
133      <a href="/2021/03/30/burp_plugin%E5%BC%80%E5%8F%91/" class="article-nav-link">
134        <strong class="article-nav-caption">上一篇</strong>
135        <div class="article-nav-title">
136          
137            burp_plugin开发
138          
139        </div>
140      </a>
141    
142    
143      <a href="/2021/03/05/%E5%86%8D%E6%AC%A1%E5%AD%A6%E4%B9%A0docker%E6%93%8D%E4%BD%9C/" class="article-nav-link">
144        <strong class="article-nav-caption">下一篇</strong>
145        <div class="article-nav-title">再次学习docker操作</div>
146      </a>
147    
148  </nav>
149
150
151  
152
153  
154
155  
156  
157  <div class="gitalk" id="gitalk-container"></div>
158  
159<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
160
161  
162<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
162
163
164  
165<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
165
166
167  
167<script type="text/javascript">
168    var gitalk = new Gitalk({
169      clientID: 'c2ff86b3b4668317d630',
170      clientSecret: '92facc954b6661c7556b845f2cb775dfb77df12c',
171      repo: 'sunny250.github.io',
172      owner: 'sunny250',
173      admin: ['sunny250'],
174      // id: location.pathname,      // Ensure uniqueness and length less than 50
175      id: md5(location.pathname),
176      distractionFreeMode: false,  // Facebook-like distraction free mode
177      pagerDirection: 'last'
178    })
179
180  gitalk.render('gitalk-container')
181  </script>
181
182
183  
184
185</article>
186</section>
187      <footer class="footer">
188  <div class="outer">
189    <ul class="list-inline">
190      <li>
191        &copy;
192        2019-2025
193        sunny250
194      </li>
195      <li>
196        
197        
198        
199        <a href="https://hexo.io" target="_blank">Hexo</a> Theme <a href="https://github.com/Shen-Yu/hexo-theme-ayer" target="_blank">Ayer</a> by shenyu
200        
201      </li>
202    </ul>
203    <ul class="list-inline">
204      <li>
205        
206        
207        <ul class="list-inline">
208  <li>PV:<span id="busuanzi_value_page_pv"></span></li>
209  <li>UV:<span id="busuanzi_value_site_uv"></span></li>
210</ul>
211        
212      </li>
213      <li>
214        <!-- cnzz统计 -->
215        
216      </li>
217    </ul>
218  </div>
219</footer>
220    <div class="to_top">
221        <div class="totop" id="totop">
222  <i class="ri-arrow-up-line"></i>
223</div>
224      </div>
225    </main>
226    
227    <aside class="sidebar">
228      
229        <button class="navbar-toggle"></button>
230<nav class="navbar">
231  
232  <div class="logo">
233    <a href="/"><img src="/images/logo.jpg" alt="sunny250`s blog"></a>
234  </div>
235  
236  <ul class="nav nav-main">
237    
238    <li class="nav-item">
239      <a class="nav-item-link" href="/">主页</a>
240    </li>
241    
242    <li class="nav-item">
243      <a class="nav-item-link" href="/archives/">
243归档</a>
244    </li>
245    
246    <li class="nav-item">
247      <a class="nav-item-link" href="/tags/">标签</a>
248    </li>
249    
250    <li class="nav-item">
251      <a class="nav-item-link" href="/categories/">分类</a>
252    </li>
253    
254    <li class="nav-item">
255      <a class="nav-item-link" href="/links/">友链</a>
256    </li>
257    
258    <li class="nav-item">
259      <a class="nav-item-link" href="/about/">关于我</a>
260    </li>
261    
262  </ul>
263</nav>
264<nav class="navbar navbar-bottom">
265  <ul class="nav">
266    <li class="nav-item">
267      
268      <a class="nav-item-link nav-item-search"  title="Search">
269        <i class="ri-search-line"></i>
270      </a>
271      
272      
273    </li>
274  </ul>
275</nav>
276<div class="search-form-wrap">
277  <div class="local-search local-search-plugin">
278  <input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
279  <div id="local-search-result" class="local-search-result"></div>
280</div>
281</div>
282      </aside>
283      
284<script src="/js/jquery-2.0.3.min.js"></script>
284
285
286
287<script src="/js/jquery.justifiedGallery.min.js"></script>
287
288
289
290<script src="/js/lazyload.min.js"></script>
290
291
292
293<script src="/js/busuanzi-2.3.pure.min.js"></script>
293
294
295
296
297
298  
299<script src="/js/tocbot.min.js"></script>
299
300
301  
301<script>
302    // Tocbot_v4.7.0  http://tscanlin.github.io/tocbot/
303    tocbot.init({
304      tocSelector: '.tocbot',
305      contentSelector: '.article-entry',
306      headingSelector: 'h1, h2, h3, h4, h5, h6',
307      hasInnerContainers: true,
308      scrollSmooth: true,
309      positionFixedSelector: '.tocbot',
310      positionFixedClass: 'is-position-fixed',
311      fixedSidebarOffset: 'auto',
312    });
313  </script>
313
314
315
316<script>
317  var ayerConfig = {
318    mathjax: true
319  }
320</script>
320
321
322
323<script src="/js/ayer.js"></script>
323
324
325
326
327  
327<script type="text/x-mathjax-config">
328  MathJax.Hub.Config({
329      tex2jax: {
330          inlineMath: [ ['$','$'], ["\\(","\\)"]  ],
331          processEscapes: true,
332          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
333      }
334  });
335
336  MathJax.Hub.Queue(function() {
337      var all = MathJax.Hub.getAllJax(), i;
338      for(i=0; i < all.length; i += 1) {
339          all[i].SourceElement().parentNode.className += ' has-jax';
340      }
341  });
342</script>
342
343
344<script src="https://cdn.bootcss.com/mathjax/2.7.6/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
344
345
346
347  </div>
348</body>
349
350</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.