-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
321 lines (284 loc) · 42.1 KB
/
index.html
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
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><title>Sherlozk - trace your love</title><meta name="author" content="Sherlozk"><meta name="copyright" content="Sherlozk"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="全栈工程师, 最近喜欢玩极限飞盘">
<meta property="og:type" content="website">
<meta property="og:title" content="Sherlozk">
<meta property="og:url" content="https://sherlozk.github.io/index.html">
<meta property="og:site_name" content="Sherlozk">
<meta property="og:description" content="全栈工程师, 最近喜欢玩极限飞盘">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/IMG_3761.JPG">
<meta property="article:author" content="Sherlozk">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/IMG_3761.JPG"><link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/IMG_3761.JPG"><link rel="canonical" href="https://sherlozk.github.io/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: undefined,
translate: undefined,
noticeOutdate: undefined,
highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
copy: {
success: '复制成功',
error: '复制错误',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: true,
post: false
},
runtime: '',
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: undefined,
lightbox: 'fancybox',
Snackbar: undefined,
source: {
justifiedGallery: {
js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
}
},
isPhotoFigcaption: false,
islazyload: false,
isAnchor: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'Sherlozk',
isPost: false,
isHome: true,
isHighlightShrink: false,
isToc: false,
postUpdate: '2022-11-28 23:05:07'
}</script><noscript><style type="text/css">
#nav {
opacity: 1
}
.justified-gallery img {
opacity: 1
}
#recent-posts time,
#post-meta time {
display: inline !important
}
</style></noscript><script>(win=>{
win.saveToLocal = {
set: function setWithExpiry(key, value, ttl) {
if (ttl === 0) return
const now = new Date()
const expiryDay = ttl * 86400000
const item = {
value: value,
expiry: now.getTime() + expiryDay,
}
localStorage.setItem(key, JSON.stringify(item))
},
get: function getWithExpiry(key) {
const itemStr = localStorage.getItem(key)
if (!itemStr) {
return undefined
}
const item = JSON.parse(itemStr)
const now = new Date()
if (now.getTime() > item.expiry) {
localStorage.removeItem(key)
return undefined
}
return item.value
}
}
win.getScript = url => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
})
win.activateDarkMode = function () {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
win.activateLightMode = function () {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
}
}
const t = saveToLocal.get('theme')
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
if (t === undefined) {
if (isLightMode) activateLightMode()
else if (isDarkMode) activateDarkMode()
else if (isNotSpecified || hasNoSupport) {
const now = new Date()
const hour = now.getHours()
const isNight = hour <= 6 || hour >= 18
isNight ? activateDarkMode() : activateLightMode()
}
window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
if (saveToLocal.get('theme') === undefined) {
e.matches ? activateDarkMode() : activateLightMode()
}
})
} else if (t === 'light') activateLightMode()
else activateDarkMode()
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
if (asideStatus === 'hide') {
document.documentElement.classList.add('hide-aside')
} else {
document.documentElement.classList.remove('hide-aside')
}
}
const detectApple = () => {
if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
document.documentElement.classList.add('apple')
}
}
detectApple()
})(window)</script><meta name="generator" content="Hexo 6.3.0"><link rel="alternate" href="/atom.xml" title="Sherlozk" type="application/atom+xml">
</head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><script>const preloader = {
endLoading: () => {
document.body.style.overflow = 'auto';
document.getElementById('loading-box').classList.add("loaded")
},
initLoading: () => {
document.body.style.overflow = '';
document.getElementById('loading-box').classList.remove("loaded")
}
}
window.addEventListener('load',()=> { preloader.endLoading() })
if (false) {
document.addEventListener('pjax:send', () => { preloader.initLoading() })
document.addEventListener('pjax:complete', () => { preloader.endLoading() })
}</script><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/IMG_3761.JPG" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">23</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">2</div></a></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间线</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于我</span></a></div></div></div></div><div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background-image: url('https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/cover.JPEG')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">Sherlozk</a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 首页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间线</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/music/"><i class="fa-fw fas fa-music"></i><span> 音乐</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于我</span></a></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="site-info"><h1 id="site-title">Sherlozk</h1><div id="site-subtitle"><span id="subtitle"></span></div><div id="site_social_icons"><a class="social-icon" href="https://github.com/Sherlozk" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div id="scroll-down"><i class="fas fa-angle-down scroll-down-effects"></i></div></header><main class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div class="recent-post-item"><div class="post_cover left"><a href="/2021/01/01/python-logging/" title="Python 多进程下 logging 日志切分踩坑"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Python 多进程下 logging 日志切分踩坑"></a></div><div class="recent-post-info"><a class="article-title" href="/2021/01/01/python-logging/" title="Python 多进程下 logging 日志切分踩坑">Python 多进程下 logging 日志切分踩坑</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2021-01-01T12:25:43.000Z" title="发表于 2021-01-01 20:25:43">2021-01-01</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">起这个事情从一个新的 tornado 服务说起,这个服务部署到预发布环境之后,会有一个流水线定时每个小时触发访问塞数据到这个服务,但是每天晚上12点服务会产生大量的CLOSE_WAIT,导致所有进程被阻塞,整个服务失效。
回顾 TIME_WAIT 和 CLOSE_WAIT 相关知识可以自行 Google ,重点就是一句话:CLOSE_WAIT 问题一定出在自己的代码里面
承查日志发现没有日志…
一开始我怀疑是全局 MongoDB Client 存在进程安全问题,于是把MongoDB Client 放到了数据类当中,并且每次数据类__del__的时候会close连接。重启服务,弄了一个循环跑了一千次,怼了几十万次数据,一觉睡醒啥事儿没有。以为搞定了。
结果…第二天12点又出现了…CLOSE_WAIT
转依然没有日志,无奈只能用 pysnooper 来调试接口,把堆栈打出来,看看卡在哪里了。(这是依然不知道问题在哪里)重启服务就没问题…
这里先夸一下 pysnooper,可以让你直接在服务器上面获得调试能力
[email protected](output="/xxx/lo ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2020/02/13/haha/" title="与自己的对话"><img class="post_bg" src="/2020/02/13/haha/psb.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="与自己的对话"></a></div><div class="recent-post-info"><a class="article-title" href="/2020/02/13/haha/" title="与自己的对话">与自己的对话</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2020-02-12T18:46:36.000Z" title="发表于 2020-02-13 02:46:36">2020-02-13</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%A3%E6%96%87/">散文</a></span></div><div class="content">今天聊天,从工作聊到近况聊到从前再到生活人生。
让我又回想了一次许许多多的事情。趁余兴还在,记录一下吧。
可能有一部分的人跟我一样,工作的辛苦反而是久违的放松。
虽说我成长在教师家庭,但从小到大过得却不那么像在书香门第。总在奔波于生计,父亲爱摄影,为了把相机和胶卷的钱赚回来,他总带着我去给学生们拍生活照,那时候艺术照还是个奢侈品,但我们生活照只收两毛钱一张,『过胶』的话三毛钱。那时候中学生的一周零花钱是五毛,愿意拿两毛到三毛来留下自己模样的人络绎不绝。结果半年不到就把钱给赚回来了。
按理说,这样应该是赚到了第一桶金,生活自然会宽松些。然而好景不长,爷爷肝癌晚期,所有的钱都拿去治病,仍是不够。可是在生命面前,欠再多的钱,也不愿放弃。时至今日,我仍然会不时梦到在一条长提上,一辆双杠自行车,一位白发老人,载着一个黄发小儿,江水是红色的,因为斜阳在山那头…还有他在被宣告无可救治之后,回到家中,在病榻前最后教我的那首《静夜诗》…以及那个父亲叫我不用去上学,穿好衣服回老家的下午,我仿佛懂得了些什么。那年我六岁。
我经常抬头望,明月我看到了,可哪颗星星是你。
后来我们还干起了其他行当:小卖部 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2018/02/14/traceDump/" title="逆向从 Instruments 中获取 GPU 数据"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="逆向从 Instruments 中获取 GPU 数据"></a></div><div class="recent-post-info"><a class="article-title" href="/2018/02/14/traceDump/" title="逆向从 Instruments 中获取 GPU 数据">逆向从 Instruments 中获取 GPU 数据</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2018-02-14T15:12:36.000Z" title="发表于 2018-02-14 23:12:36">2018-02-14</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content"> 背景: RTMP SDK需要获取硬编硬解时候的GPU数据,第一时间想起了TraceParser, 但是TraceParser不支持GPU Driver模板. 于是想着能不能扩展TraceParser模板. 发现main.m文件只有寥寥几行代码,完全不知道做了什么, 但是google和km之后发现应该是采用了反序列化的方式来dump出数据. 缺点很明显, 需要自己实现NSCoding,还需要先将.trace文件解压出.run文件. 不知道结构无从下手.
在 github 上发现有一种新的思路TraceUtility, 通过调用 Undocument API 去解析 Trace 文件.下面结合 Hopper 分析Instruments看看.
在逆向过程中发现打开文档用的是NSDocument,-showTemplateChooser:模板选择器. 这意味着一个trace文件是通过NSDocument加上自定义文档类型(模板)来储存的, 当然这个文件类型并不会存在于MIME当中的.
在-initialize:中对 Instruments 做了初始化, 包括一些链接 XCode 中 S ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2017/10/22/ios-hook/" title="不懂汇编,如何逆向(iOS)"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="不懂汇编,如何逆向(iOS)"></a></div><div class="recent-post-info"><a class="article-title" href="/2017/10/22/ios-hook/" title="不懂汇编,如何逆向(iOS)">不懂汇编,如何逆向(iOS)</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2017-10-22T04:10:38.000Z" title="发表于 2017-10-22 12:10:38">2017-10-22</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">** $ 写给像我一样的小白**
0x1 逆向一个APP有哪些步骤(不越狱)
砸壳
dump出头文件
分析功能界面
hopper || iDA 分析伪代码
写hook
打包动态库
注入动态库到APP
APP重签名
安装到手机上
MonkeyDevMonkeyDev是一个xcode插件, 此处先膜一下@庆哥
原有iOSOpenDev的升级,非越狱插件开发集成神器!
- 可以使用Xcode开发CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越狱机器开发插件,这是原来iOSOpenDev功能的迁移和改进。
- 只需拖入一个砸壳应用,自动集成class-dump、restore-symbol、Reveal、Cycript和注入的动态库并重签名安装到非越狱机器。
- 支持调试自己编写的动态库和第三方App
- 支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。
庆哥的github如是说.
MonkeyDev解决了上面说到的50%的步骤, 再外加一个动态调试. ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2017/08/27/party/" title="闭上眼,你看到的更多"><img class="post_bg" src="/2017/08/27/party/IMG_4341.JPG" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="闭上眼,你看到的更多"></a></div><div class="recent-post-info"><a class="article-title" href="/2017/08/27/party/" title="闭上眼,你看到的更多">闭上眼,你看到的更多</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2017-08-26T17:00:50.000Z" title="发表于 2017-08-27 01:00:50">2017-08-27</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%A3%E6%96%87/">散文</a></span></div><div class="content">今天以一个志愿者的身份参加了一场特殊的音乐会,地点在深圳市残疾人综合服务中心的13楼.
我参加过很多音乐会, 但都是以观众或者表演者的身份, 一周前看到事业群发来邮件, 招募视障者音乐会工作人员, 心头触动了一下,就点击了报名. 因为我觉得,对于同样热爱音乐的他们, 或许我该做些什么.
这场音乐会,没有直播,没有炒作,甚至连DJ都是我这样的新手. 表演者们,小的只有几岁, 年长的我叫一声老爷爷老奶奶不过分. 他们都让人意外地好相处,好商量,伴奏找不到? 没关系,我清唱.
震撼和开心这两个词可以概括我这一天的感受.
至此刻,我心里依然无法平静. 我在音控室, 很多次都是站起来听他们演唱的. 除去了所有的舞台风格, 表现形式……当你闭上眼睛,去感受他们给你传达的东西,真真切切能感受到,他们在并不完整的人生当中, 萃取出来的那种乐观,坚强,豁达. 真想知道蓝天白云,车水马龙,在他们脑海中都是怎样的一种表达.
音乐本就不是用来看的,用眼睛去量度就狭隘了.
一天下来我不敢有丝毫怠慢,播放伴奏,调音,暖场,设备调整….因为我知道, 为了台上这几分钟,需要倾注多少热爱. 以至于我回到公司之后 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2017/08/23/ARM-base/" title="ARM汇编基础"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ARM汇编基础"></a></div><div class="recent-post-info"><a class="article-title" href="/2017/08/23/ARM-base/" title="ARM汇编基础">ARM汇编基础</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2017-08-23T11:55:24.000Z" title="发表于 2017-08-23 19:55:24">2017-08-23</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">在高级语言,如OC、C中,操作的对象是变量,而在ARM汇编语言中,操作的对象是寄存器(register)、内存(RAM)、栈(stack)。
寄存器 - 可以看成CPU自带的变量,数量有限,需要更多的时候会把他们放到内存中
内存 - 变量存储的主要载体,容量大,但是对内存的操作要比对寄存器的操作慢得多
栈 - 其实本质也是内存,有特定的读写顺序:先进后出,而且ARM的栈是满递减(Full Descending)的,向下增长,新的变量会被存放到栈底的位置,而且越靠近栈底,内存地址越小.
Continues……
</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2017/08/04/lmf-md/" title="生活、音乐、远方"><img class="post_bg" src="/2017/08/04/lmf-md/music.JPG" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="生活、音乐、远方"></a></div><div class="recent-post-info"><a class="article-title" href="/2017/08/04/lmf-md/" title="生活、音乐、远方">生活、音乐、远方</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2017-08-04T02:26:54.000Z" title="发表于 2017-08-04 10:26:54">2017-08-04</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%A3%E6%96%87/">散文</a></span></div><div class="content">
生活我每天上班几乎都会坐车,打车或是走到深大小西门坐深大的电瓶车到北门,我喜欢坐车的时候发呆,头靠在窗边,目光总不在近处。每天都在走着同一条路,但是对沿途的建筑、人和事都一概不知,那个奇形怪状的雕塑有什么故事,邻街的马路是否一样拥堵,看起来装修豪华的餐厅食物味道如何。有时候,我又只想看看我喜欢的她在哪里留下什么话,希望全世界只有她……
几乎每天都在各种想象中度过这么一段时光。
音乐我是一个对音乐有瘾的人,因为它总能使我异常兴奋。而且我喜欢无拘无束的街头音乐。以前住在一个叫大学城的孤岛,周末的公交和地铁不会让你有想出去的欲望。音乐成了唯一的消遣,谁能告诉我,体育馆闪烁的灯光是否是在开live show,城北和中心湖的卖唱大叔大家喜不喜欢,吉他弹得很好的小哥今天在哪条小路,我会加入他们也会拿着吉他走上街头,我们不在乎彼此的曾经,这一刻只用音乐交流。但经常缺少一个很显眼的东西告诉其他人或者告诉我,这里有音乐,你要来吗?
远方『到此一游』似乎已经是中国人甩不掉的一个flag。我原谅你有感,又不善措辞。但那又丑又不显眼的几个字,我看不出任何个人情怀,还期望后来者,能有所同感?
在火车环境变 ...</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2017/03/25/NewBegin/" title="致我们终将逝去的浪荡"><img class="post_bg" src="/2017/03/25/NewBegin/img.PNG" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="致我们终将逝去的浪荡"></a></div><div class="recent-post-info"><a class="article-title" href="/2017/03/25/NewBegin/" title="致我们终将逝去的浪荡">致我们终将逝去的浪荡</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2017-03-25T11:12:32.000Z" title="发表于 2017-03-25 19:12:32">2017-03-25</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%95%A3%E6%96%87/">散文</a></span></div><div class="content">Nothing come from nothing
早上踩着九点出门,避开所有的阳光走向公司。二月份的深圳,海风恰好能把你的鼻子冻红。
这是我离职回校完成毕业设计的日子,毕设不过是个借口,才离开两个月我才发现我是有多么想念这里的一切。
生活就是你在深圳想念着广州。
离校那天,我哭了,比谈一场四年的恋爱,最后分手了哭得还要惨,只是没有任何声音发出而已。我在开车,副驾的表弟在装作睡觉。最后那个孤岛终于也从地图上被移走了。我没有回头,不忍回头。
生活的孤独才是一个人前行最好的环境,不用去交新的女朋友,没有时刻要一起玩才能维持关系的兄弟,没有爸妈在耳边的唠叨。在陌生的城市,除了时不时心里传来的孤独感,没有其他事情可以打扰到我。我可以一点钟下班,因为家里没有人等我回家。我可以晚上通宵周末睡觉,因为没有人拉我出去玩。
但是这样的生活久了,会让你怀疑人生。
所以,我必须去交一些朋友,往心里去的那种。时间给我们的间隔,带来的是相聚时的热泪盈眶。当然这也包括我深爱的家人。他们作为一份礼物珍藏在我心里,怀疑人生的时候,想想他们。
我是一个半浪漫主义者,这是我天生的理性决定的。我曾经希望能像福尔摩斯一样完全 ...</div></div></div><div class="recent-post-item"><div class="post_cover left"><a href="/2016/11/01/iproxy/" title="使用iproxy通过USB将iPhone的端口映射到电脑"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="使用iproxy通过USB将iPhone的端口映射到电脑"></a></div><div class="recent-post-info"><a class="article-title" href="/2016/11/01/iproxy/" title="使用iproxy通过USB将iPhone的端口映射到电脑">使用iproxy通过USB将iPhone的端口映射到电脑</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2016-11-01T09:41:12.000Z" title="发表于 2016-11-01 17:41:12">2016-11-01</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">在研究ATX的过程中,发现通过WIFI来连接发送指令,会有延迟,响应不够迅速.所以如果可以通过usb代替进行连接,效率会有很大的提高
iproxy是usbmuxd附带的一个小工具,它的作用是将设备的某个端口映射到电脑的某个端口mac下可以通过brew安装
1brew install usbmuxd
用法很简单:
第一个参数是你要映射到的电脑端口
第二个是iPhone的端口
UDID一般不用填,会自动获取,不过多设备连接时,需要用于区分设备
iproxy的作用很丰富,一般搞越狱的大牛,会用来映射iPhone的22端口(ssh端口),我使用atx的过程中使用了iPhone的8100端口所以直接指令如下:
1iproxy 2222 8100
相应的,代码或者脚本里面原本写设备IP的地方就要改成localhost:2222
—->
这样也就没有了很多手机必须要跟电脑在同一网段的尴尬情况
</div></div></div><div class="recent-post-item"><div class="post_cover right"><a href="/2016/11/01/atx/" title="ATX自动化测试框架-iOS"><img class="post_bg" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="ATX自动化测试框架-iOS"></a></div><div class="recent-post-info"><a class="article-title" href="/2016/11/01/atx/" title="ATX自动化测试框架-iOS">ATX自动化测试框架-iOS</a><div class="article-meta-wrap"><span class="post-meta-date"><i class="far fa-calendar-alt"></i><span class="article-meta-label">发表于</span><time datetime="2016-11-01T08:18:22.000Z" title="发表于 2016-11-01 16:18:22">2016-11-01</time></span><span class="article-meta"><span class="article-meta-separator">|</span><i class="fas fa-inbox"></i><a class="article-meta__categories" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a></span></div><div class="content">要用到的两大框架ATX: AutomatorX简称,本文主要讨论的iOS自动化测试的框架WDA: WebDriverAgent的简称,是Facebook为苹果开发的一个自动化测试框架优点(对比Appium)引用作者原话:
1. ATX依赖比较少,安装快,上手也快
2. 可以测试第三方应用,比如微信,网易新闻之类
3. 更新方便,可以使用pip直接更新应用
4. 集成图像识别,可以解决仅靠UI无法定位识别的问题
5. 集成测试报告
6. 由知名企业网易的游戏测试开发团队开发(其实就是我们开发的),可以比appium更及时的响应需求,还可以用中文交流和沟通。
WebDeiverAgent使用ATX之前要先安装WebDeiverAgent(以下简称WDA).其实也很简单:
1. 到github上面把包下了
2. 进工程的根目录,运行./Scripts/bootstrap.sh下载依赖库(要用到Carthage和npm)
3. 打开工程文件WebDriverAgent.xcodeproj
4. Scheme选择WebDriverAgentRunner
5. 设备选择模拟器或者iPhone都 ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><a class="page-number" href="/page/3/#content-inner">3</a><a class="extend next" rel="next" href="/page/2/#content-inner"><i class="fas fa-chevron-right fa-fw"></i></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/IMG_3761.JPG" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">Sherlozk</div><div class="author-info__description">全栈工程师, 最近喜欢玩极限飞盘</div></div><div class="card-info-data site-data is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">23</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">11</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">2</div></a></div><a id="card-info-btn" href="https://github.com/Sherlozk"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/Sherlozk" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:[email protected]" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">一扇不愿意为你开的门, 一直敲是不礼貌的</div></div><div class="sticky_layout"><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/2021/01/01/python-logging/" title="Python 多进程下 logging 日志切分踩坑"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="Python 多进程下 logging 日志切分踩坑"/></a><div class="content"><a class="title" href="/2021/01/01/python-logging/" title="Python 多进程下 logging 日志切分踩坑">Python 多进程下 logging 日志切分踩坑</a><time datetime="2021-01-01T12:25:43.000Z" title="发表于 2021-01-01 20:25:43">2021-01-01</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2020/02/13/haha/" title="与自己的对话"><img src="/2020/02/13/haha/psb.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="与自己的对话"/></a><div class="content"><a class="title" href="/2020/02/13/haha/" title="与自己的对话">与自己的对话</a><time datetime="2020-02-12T18:46:36.000Z" title="发表于 2020-02-13 02:46:36">2020-02-13</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2018/02/14/traceDump/" title="逆向从 Instruments 中获取 GPU 数据"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="逆向从 Instruments 中获取 GPU 数据"/></a><div class="content"><a class="title" href="/2018/02/14/traceDump/" title="逆向从 Instruments 中获取 GPU 数据">逆向从 Instruments 中获取 GPU 数据</a><time datetime="2018-02-14T15:12:36.000Z" title="发表于 2018-02-14 23:12:36">2018-02-14</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2017/10/22/ios-hook/" title="不懂汇编,如何逆向(iOS)"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="不懂汇编,如何逆向(iOS)"/></a><div class="content"><a class="title" href="/2017/10/22/ios-hook/" title="不懂汇编,如何逆向(iOS)">不懂汇编,如何逆向(iOS)</a><time datetime="2017-10-22T04:10:38.000Z" title="发表于 2017-10-22 12:10:38">2017-10-22</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/2017/08/27/party/" title="闭上眼,你看到的更多"><img src="/2017/08/27/party/IMG_4341.JPG" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="闭上眼,你看到的更多"/></a><div class="content"><a class="title" href="/2017/08/27/party/" title="闭上眼,你看到的更多">闭上眼,你看到的更多</a><time datetime="2017-08-26T17:00:50.000Z" title="发表于 2017-08-27 01:00:50">2017-08-27</time></div></div></div></div><div class="card-widget card-categories"><div class="item-headline">
<i class="fas fa-folder-open"></i>
<span>分类</span>
</div>
<ul class="card-category-list" id="aside-cat-list">
<li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%8A%80%E6%9C%AF/"><span class="card-category-list-name">技术</span><span class="card-category-list-count">15</span></a></li><li class="card-category-list-item "><a class="card-category-list-link" href="/categories/%E6%95%A3%E6%96%87/"><span class="card-category-list-name">散文</span><span class="card-category-list-count">8</span></a></li>
</ul></div><div class="card-widget card-tags"><div class="item-headline"><i class="fas fa-tags"></i><span>标签</span></div><div class="card-tag-cloud"><a href="/tags/Linux/" style="font-size: 1.2em; color: #999da3">Linux</a> <a href="/tags/Markdown/" style="font-size: 1.1em; color: #999">Markdown</a> <a href="/tags/MySQL/" style="font-size: 1.1em; color: #999">MySQL</a> <a href="/tags/Python/" style="font-size: 1.4em; color: #99a5b6">Python</a> <a href="/tags/iOS/" style="font-size: 1.1em; color: #999">iOS</a> <a href="/tags/iOS%E9%80%86%E5%90%91/" style="font-size: 1.3em; color: #99a1ac">iOS逆向</a> <a href="/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/" style="font-size: 1.1em; color: #999">数据结构</a> <a href="/tags/%E6%B8%B8%E8%AE%B0/" style="font-size: 1.1em; color: #999">游记</a> <a href="/tags/%E7%BD%91%E7%BB%9C/" style="font-size: 1.1em; color: #999">网络</a> <a href="/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/" style="font-size: 1.1em; color: #999">自动化测试</a> <a href="/tags/%E9%9A%8F%E7%AC%94/" style="font-size: 1.5em; color: #99a9bf">随笔</a></div></div><div class="card-widget card-archives"><div class="item-headline"><i class="fas fa-archive"></i><span>归档</span><a class="card-more-btn" href="/archives/" title="查看更多">
<i class="fas fa-angle-right"></i></a></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2021/01/"><span class="card-archive-list-date">2021年01月</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2020/02/"><span class="card-archive-list-date">2020年02月</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2018/02/"><span class="card-archive-list-date">2018年02月</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2017/10/"><span class="card-archive-list-date">2017年10月</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2017/08/"><span class="card-archive-list-date">2017年08月</span><span class="card-archive-list-count">3</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2017/03/"><span class="card-archive-list-date">2017年03月</span><span class="card-archive-list-count">1</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2016/11/"><span class="card-archive-list-date">2016年11月</span><span class="card-archive-list-count">2</span></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2016/08/"><span class="card-archive-list-date">2016年08月</span><span class="card-archive-list-count">2</span></a></li></ul></div><div class="card-widget card-webinfo"><div class="item-headline"><i class="fas fa-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="item-name">文章数目 :</div><div class="item-count">23</div></div><div class="webinfo-item"><div class="item-name">本站访客数 :</div><div class="item-count" id="busuanzi_value_site_uv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">本站总访问量 :</div><div class="item-count" id="busuanzi_value_site_pv"><i class="fa-solid fa-spinner fa-spin"></i></div></div><div class="webinfo-item"><div class="item-name">最后更新时间 :</div><div class="item-count" id="last-push-date" data-lastPushDate="2022-11-28T15:05:06.963Z"><i class="fa-solid fa-spinner fa-spin"></i></div></div></div></div></div></div></main><footer id="footer" style="background-image: url('https://cdn.jsdelivr.net/gh/Sherlozk/cdn/images/cover.JPEG')"><div id="footer-wrap"><div class="copyright">©2020 - 2022 By Sherlozk</div><div class="framework-info"><span>框架 </span><a href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.min.js"></script><div class="js-pjax"><script>function subtitleType () {
getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => {
jinrishici.load(result =>{
if (true) {
const sub = []
const content = result.data.content
sub.unshift(content)
window.typed = new Typed('#subtitle', {
strings: sub,
startDelay: 300,
typeSpeed: 150,
loop: false,
backSpeed: 50,
})
} else {
document.getElementById('subtitle').innerHTML = result.data.content
}
})
})
}
if (true) {
if (typeof Typed === 'function') {
subtitleType()
} else {
getScript('https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js').then(subtitleType)
}
} else {
subtitleType()
}
</script></div><script defer="defer" id="fluttering_ribbon" mobile="false" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-fluttering-ribbon.min.js"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>