接著上篇文章內(nèi)容 函數(shù)棧幀與BP寄存器[https://juejin.cn/post/7402058032651665462] 我們繼續(xù)構(gòu)造兩個(gè)函數(shù)的棧幀,GDB調(diào)試畏邢,當(dāng)程序...
接著上篇文章內(nèi)容 函數(shù)棧幀與BP寄存器[https://juejin.cn/post/7402058032651665462] 我們繼續(xù)構(gòu)造兩個(gè)函數(shù)的棧幀,GDB調(diào)試畏邢,當(dāng)程序...
讓我們寫(xiě)一段簡(jiǎn)單的代碼來(lái)分析 通過(guò)GDB調(diào)試,我們可以查看寄存器和匯編代碼,方便我們理解這里我們?cè)趍ain,foo函數(shù)加上斷點(diǎn) 通過(guò)layout split命令同時(shí)查看源碼和...
主要思路是找到被hook函數(shù)地址,并將被hook函數(shù)地址執(zhí)行指令替換成jmp <地址偏移量>浴韭,這個(gè)地址由hook函數(shù)地址和target函數(shù)地址相減計(jì)算而來(lái),jmp相對(duì)跳轉(zhuǎn)指令...
弄清楚GDB的底層原理音羞,首先需要了解一下ptrace這個(gè)系統(tǒng)調(diào)用: ptrace 是一個(gè)用于在 Unix 和 Unix-like 操作系統(tǒng)上進(jìn)行進(jìn)程調(diào)試的系統(tǒng)調(diào)用囱桨。它允許一個(gè)...
大家都知道MMKV性能好仓犬,因?yàn)槭侵苯硬僮鲀?nèi)存嗅绰。內(nèi)存其實(shí)就是一個(gè)數(shù)組結(jié)構(gòu),根據(jù)地址去尋址查找數(shù)據(jù)的搀继,就跟數(shù)組通過(guò)index查找數(shù)據(jù)一樣窘面,但是數(shù)組修改是很不方便的,比如刪除中間一...
AspectJ是一種面向切面編程(AOP)語(yǔ)言叽躯,它可以用于在Java代碼中定義和使用切面财边。下面是AspectJ的基本語(yǔ)法和意義: 下面是AspectJ的完整語(yǔ)法: 切面聲明 ...
1. 構(gòu)造函數(shù)抽象 先思考一個(gè)問(wèn)題酣难,如何計(jì)算平方根?最常用的方法就是牛頓逐步逼近法黑滴, 比如我們要計(jì)算2的平方根憨募,假定初始猜測(cè)值是1 猜測(cè)商平均值 一般我們用代碼寫(xiě)出來(lái)就是下面...
觀察其他App的UI結(jié)構(gòu),需要用到Android Device Monitor 的 Dump View Hierarchy 功能莺债。 Mac 上 Monitor 在 Andro...
Java的File類提供的接口僅限于判斷目錄和文件滋觉,有時(shí)候在復(fù)制某些數(shù)據(jù)的時(shí)候,還需要判斷其它的文件類型齐邦,比如管道文件椎侠,需要過(guò)濾掉,不然IO操作的時(shí)候會(huì)阻塞措拇。這里我們用到的是...
偏向鎖適合在只有一個(gè)線程執(zhí)行同步代碼時(shí)我纪,提升性能線程進(jìn)入同步代碼塊是,會(huì)通過(guò)CAS(compare and swap)操作丐吓,設(shè)置對(duì)象頭的鎖標(biāo)志位浅悉,如果標(biāo)志位的線程id為空,則...
此篇主要講commit和apply操作的實(shí)現(xiàn)我們對(duì)這玩意兒的印象是commit是同步操作,apply是異步操作褂删,盡量用apply飞醉,少用commit。那么問(wèn)題來(lái)了屯阀, 線上卡頓日...