2022-08-31

電腦軟件為什么那么容易被破解?

????理論上不存在無法破解的軟件,但并不是說破解軟件比開發(fā)容易一萬倍,防破解的目的不是要做一個(gè)無法破解的軟件,而是:

? ??讓破解軟件的成本遠(yuǎn)大于購(gòu)買軟件的成本话原,知名軟件大多都有實(shí)力讓軟件破解難度大大加大,但出于市場(chǎng)需求和爭(zhēng)取用戶的角度考慮牢撼,會(huì)放水!


我們先來一個(gè)最最簡(jiǎn)單的軟件破解,假設(shè)我們寫了一個(gè)軟件,它的注冊(cè)手段代碼如下

把它編譯運(yùn)行一下試試
要破解怎么辦呢?超簡(jiǎn)單的,你把這個(gè)程序后綴改成txt然后打開,搜索注冊(cè)碼.然后翻一翻key就找到了。

? ? 就算是今天,仍然有一大堆軟件采用這種軟件保護(hù)機(jī)制,不過這類軟件要不大多不怎么值錢比如xx管理系統(tǒng),計(jì)算器之類的,要不就是軟件作者別有用心防君子不防小人。

????問題出在那了呢,這類保護(hù)機(jī)制的問題是,目前大部分的編譯器都會(huì)將字符串常量直接存儲(chǔ)在可執(zhí)行文件結(jié)構(gòu)中,所以你要是硬編碼key,那么上面這種破解方法幾乎是屢試不爽甚至不需要什么逆向破解知識(shí)就能搞定。

????讓我們進(jìn)入防破解V2.0時(shí)代,為了與時(shí)俱進(jìn),我們稍微把上面的代碼改一下值骇。

現(xiàn)在"TXT"破解法已經(jīng)不頂用了,你看,key找不到了

????怎么樣,這種保護(hù)手段是不是熟悉的味道熟悉的配方,這個(gè)機(jī)器碼可以從網(wǎng)卡MAC,CPU型號(hào),內(nèi)存大小等等等等去生成,當(dāng)然,key的算法也可以拉上MD5,SHA等等等等手段來弄而不是簡(jiǎn)簡(jiǎn)單單的乘一個(gè)8再加上123456,總之從機(jī)器碼到注冊(cè)碼的算法你能玩出花。

? ??然并軟移国!? 打開ollydbg,對(duì)MessageBoxA下斷點(diǎn)(也就是彈窗的函數(shù))

????然后輸入一個(gè)錯(cuò)誤的注冊(cè)碼,命中斷點(diǎn),很快,我們來到了判斷注冊(cè)碼是否正確的邏輯處理代碼吱瘩。

猜猜,要是我們把這個(gè)判斷注冊(cè)碼是否正確的代碼給它刪了)(nop指令填充)會(huì)怎么樣

????你會(huì)發(fā)現(xiàn),握草,不管我輸入什么,都是注冊(cè)成功

????那么問題出在哪了呢,你發(fā)現(xiàn),萬惡之源都始于那個(gè)MessageBox函數(shù),正是這個(gè)函數(shù),讓我們順藤摸瓜找到了注冊(cè)碼判斷代碼,時(shí)至今日,仍然有非常非常大的一部分軟件使用著這個(gè)二三十年前就在用的保護(hù)手段,每年死于MessageBox被破解的軟件,圍起來可以繞地球三圈.也就是這個(gè)保護(hù)機(jī)制,成就了所謂軟件發(fā)布后十分鐘就被破解的悲慘結(jié)局。


????這個(gè)時(shí)候,你痛定思痛,mmp,有內(nèi)鬼,既然MessageBox不好用,那我不用就是了,于是你把代碼改成下面這樣迹缀。

你看,嘖.只要你注冊(cè)碼沒輸對(duì),我直接把軟件退出(或者跳到別的地方),看你怎么辦

????可惜,內(nèi)鬼年年有,"注冊(cè)成功"幾個(gè)字還是出賣了你,打開ollydbg,查找字符串參考,然后雙擊搅裙。

????哦豁,完蛋,換湯不換藥,還是給逮住了。

????你察覺到這樣一個(gè)地方判斷注冊(cè)碼實(shí)在不靠譜,所以,你改變了策略,把檢查注冊(cè)碼的代碼復(fù)制了n遍,或者逐字符檢查注冊(cè)碼的準(zhǔn)確性裹芝,還有人將注冊(cè)成功等字樣進(jìn)行加密或混淆部逮,等到要用的時(shí)候再取出來。

????你放心,不管你復(fù)制多少次,要找出來都是時(shí)間問題,遲早是會(huì)被破解的.同時(shí)只要你要用到明文字符串你遲早還是要解密的嫂易,這種手段類似于加upx壓縮殼兄朋,只需要等待數(shù)據(jù)解壓完成,所有的東西又都是明文的了。因此比較聰明的做法是颅和,要用時(shí)解密傅事,用完后馬上把明文抹掉,這樣說不定能拖延更長(zhǎng)的時(shí)間峡扩。但這仍然也是時(shí)間問題蹭越。

????你開始發(fā)現(xiàn),與其揪出內(nèi)鬼,不如主動(dòng)出擊,也就是我們著名的與其解決問題不如解決提出問題的人,終于,你開始對(duì)調(diào)試器下手了,然后你成功進(jìn)化到防破解V2.5時(shí)代.

????這個(gè)時(shí)候,不得不介紹一個(gè)老掉牙的但非常有名的函數(shù)

IsDebugPresent

????你可能有點(diǎn)懵,這個(gè)函數(shù)是干啥子用的?,簡(jiǎn)單來說,當(dāng)我們破解一個(gè)程序的時(shí)候,大部分情況下我們會(huì)打開一個(gè)叫調(diào)試器的東西來對(duì)軟件進(jìn)行反編譯分析,誒,重點(diǎn)就在這,IsDebugPresent這個(gè)函數(shù),就能檢測(cè)我們的程序有沒有被一個(gè)調(diào)試器附加,你想啊,正常情況我們用軟件誰會(huì)吃飽撐著附加一個(gè)調(diào)試器來用,你要是用調(diào)試器附加我,你肯定就是想干壞事.

于是,你開始把代碼寫成這樣:

????于是,當(dāng)下次再ollydbg加載調(diào)試你的程序的時(shí)候,就會(huì)出現(xiàn)下面的情景。

????曾經(jīng)很長(zhǎng)一段時(shí)間(包括現(xiàn)在),很多軟件或加密殼都會(huì)檢查是否有調(diào)試器正在調(diào)試自己,比如tls段會(huì)在加載時(shí)被執(zhí)行,如果檢查到自己正在被人調(diào)試破解,就會(huì)設(shè)置一個(gè)tag讓程序跑到?jīng)]啥用的地方去或者直接退出重新,也有利用變形的PE頭讓調(diào)試器無法加載,總之手段很多教届。

????可惜這還是沒什么卵用,比如IsDebugPresent可以通過修改FS寄存器的標(biāo)志位來讓它徹底啞火,同樣的手段包括但不限于檢查int 3軟中斷,Raw Call,Query PEB,檢查Debug Privilege和父進(jìn)程等等等等,都有繞過的方式响鹃。

????暗樁嘛,只要你插,一個(gè)一個(gè)拔總是拔的完的。

????好了,還有啥法子不,放心道高一尺魔高一丈,現(xiàn)在我們來到了現(xiàn)在最流行的,防破解V3.0 VMP時(shí)代案训。

????先澄清一下,這里的VMP并不是VMP殼,它全程叫Virtual Machine Protection,簡(jiǎn)單來說,為啥我們破解軟件那么輕車熟路,還不是因?yàn)閤86 x64 arm的那堆匯編指令集我們太熟悉了唄.要是我們自己發(fā)明一套指令集,然后用這個(gè)指令集寫程序并運(yùn)行在我們自己的虛擬機(jī)上,那么,破解者一進(jìn)來,看到的不就是一臉懵逼了么买置。

????可惜的是,VM的運(yùn)行機(jī)制決定了它可能造成幾十倍乃至幾百倍的性能損失,所以,VMP必須用于保護(hù)那種關(guān)鍵且不是性能瓶頸的代碼,否者你的軟件跑起來就會(huì)像。

????那么,VMP保護(hù)機(jī)制是完美的么,當(dāng)然不是,VMP說白了,也只能做到延長(zhǎng)分析時(shí)間,你要是把VMP做的足夠復(fù)雜,足夠讓一個(gè)Cracker醉生夢(mèng)死了,但是如果這個(gè)時(shí)間足夠久,你的軟件足夠的值錢讓人有欲望來破解, 他們?nèi)匀豢梢猿浞值胤治瞿鉜M機(jī)的運(yùn)行機(jī)制,當(dāng)你的VM機(jī)運(yùn)行機(jī)制被摸清了,軟件就離淪陷不遠(yuǎn)了.

? 不過你可以放心,分析VM機(jī)執(zhí)行機(jī)理,可比自己寫VM機(jī)要頭疼多了,畢竟一個(gè)是你需要通過代碼來揣測(cè)別人的思路,而另一個(gè)本身是自己的思路轉(zhuǎn)為代碼,因此基于這點(diǎn)可以說:

? 破解軟件比制作軟件簡(jiǎn)單,在很多情況下,不存在的!

????你可能會(huì)問了,為什么現(xiàn)在市面上那么多軟件,那么多游戲,購(gòu)買了那么多聽起來那么牛逼的保護(hù)軟件,結(jié)果還是被破解了.而且剛發(fā)出來一天就被破解了强霎。

? ? ???? 其實(shí)很大的問題就出在這個(gè)商業(yè)保護(hù)軟件(比如保護(hù)殼)上,因?yàn)檫@類保護(hù)殼大多都會(huì)被賣給一大票的軟件開發(fā)商,有一句話叫樹大招風(fēng),就像現(xiàn)在流行的VMP保護(hù)機(jī)制,之所以能保護(hù),是因?yàn)槠溥\(yùn)行機(jī)理破解者不明確,如果你這個(gè)軟件就給自己用,而且你這軟件還不怎么值錢,除非大佬空虛寂寞冷,不然誰會(huì)有那閑工夫去分析你的虛擬機(jī)是怎么跑的,但商業(yè)保護(hù)殼不同,不論其采用什么樣的保護(hù)機(jī)制,只要分析過一遍搞清楚了,幾乎所有使用這類保護(hù)機(jī)制的軟件都會(huì)淪陷,而且在灰色產(chǎn)業(yè)上.這種破解甚至還頗有利可圖,只要這個(gè)保護(hù)機(jī)制不更新,一次投入,長(zhǎng)期回報(bào).于是只有說在第一次分析時(shí)會(huì)花上很長(zhǎng)的時(shí)間,之后就都只是玩套路了忿项。

? ? 因此,購(gòu)買商業(yè)保護(hù)殼,其實(shí)其保護(hù)效果并沒有想象中的那么強(qiáng),很可能在灰色產(chǎn)業(yè)中形同虛設(shè),甚至一個(gè)具有反逆向基礎(chǔ)的碼農(nóng)自己寫的說不定還更有效果.當(dāng)然一個(gè)軟件是被破解概率高不高,仍然是我之前提到的那句話:防破解不是讓軟件無法破解,而是讓破解軟件的成本遠(yuǎn)大于購(gòu)買軟件的成本。

畢竟你說你一個(gè)軟件拿來開源都沒人愛用,你還整天琢磨著怎么才不會(huì)被破解,寒摻不老鐵.

? 那么你會(huì)開始問了,有沒有更給力點(diǎn)的防破解技術(shù)?好像之前說的說來說去,無非就是拖延時(shí)間,誒,這個(gè)我們要擺正心態(tài),不論是加密還是破解,其實(shí)說白了最終就是拖延時(shí)間,你看那些加密算法,依據(jù)其數(shù)學(xué)理論,如果要破解,它的計(jì)算量就算你把全世界的計(jì)算機(jī)加起來一塊算,也夠你算三個(gè)世界末日了.

? 不過別擔(dān)心,更給力的方法還是有的,你想啊,為什么我們之前說了那么多軟件都被破解了,最最關(guān)鍵的一個(gè)原因,是我們能搞到代碼,即使這個(gè)代碼已經(jīng)是經(jīng)過編譯后的一堆匯編指令,但只要我們有這堆代碼,遲早我們還是能搞懂這個(gè)程序是怎么回事的,然后我們就可以對(duì)癥下藥干壞事.

? 這就像給你有一包面粉,而程序就是一個(gè)面包機(jī),你把面粉塞進(jìn)面包機(jī)做出了面包,有天你好奇啊,這面包機(jī)咋整咋整就出來一塊面包了呢,你就動(dòng)手把面包機(jī)拆了,然后你就知道面包機(jī)是怎么回事了城舞。

? 所以有沒有辦法不讓用戶知道我們的代碼是什么樣的呢,就像你把面粉交給了面包師傅做面包,這個(gè)面包是怎么做的,你就只能指望看面包師傅有沒有這個(gè)心情告訴你了.

? 為此,有請(qǐng)?jiān)缙谝粋€(gè)相當(dāng)流行且普遍的游戲防破解工具(物理)

????你現(xiàn)在可能表情是一臉問號(hào),但我沒和你開玩笑,在2000年時(shí)代,大部分的游戲運(yùn)行在光盤CD中,但盜版也容易啊,把光盤里的數(shù)據(jù)一復(fù)制下來,然后就可以復(fù)制出一萬張盜版光碟,所以游戲廠商們就想辦法,想來想去就想到了榔頭轩触。

????? 其操作方法很簡(jiǎn)單,拿榔頭和釘子,在光盤上釘幾條刮痕出來,造成人工的壞道,然后再將數(shù)據(jù)燒錄到正確的扇區(qū)中,這樣下來雖然程序還是可以正確運(yùn)行,但是當(dāng)光頭讀盤讀到這個(gè)壞道的時(shí)候,就會(huì)讀不過去,于是你會(huì)發(fā)現(xiàn)打開光盤后,沒有關(guān)鍵的文件,這樣你就沒辦法將游戲或者說程序拷貝出來了,同時(shí)還會(huì)對(duì)壞道的位置做一個(gè)標(biāo)記,游戲運(yùn)行時(shí)也會(huì)檢查這個(gè)標(biāo)記,那么想要盜版你就也得拿起榔頭在光盤同樣的位置上砸出同樣的刮痕出來,當(dāng)然,這幾乎是不可能的。

????可惜虛擬光驅(qū)出現(xiàn)后,同樣有辦法復(fù)刻光盤的一切數(shù)據(jù)(包括壞道),所以,這個(gè)技術(shù)拿到今天來看并沒有什么卵用.不過這仍然給了我們足夠的啟發(fā)家夺。

? ? ???? 現(xiàn)在讓我們進(jìn)入防破解V3.x時(shí)代,之所以不叫V4.0是因?yàn)檫@類技術(shù)很早就有并且比VMP保護(hù)流行的時(shí)間還早的多,而且它可能是最近接理論上不可破解的防破解手段脱柱。

? ???? 我們先聊的是加密狗或者又叫Ukey保護(hù),就是運(yùn)行軟件你需要插入一個(gè)U盤一樣的東西到電腦上,實(shí)際上這個(gè)Ukey是一個(gè)微型電腦,軟件的一些關(guān)鍵的算法和代碼,都在這個(gè)UKey的芯片里,當(dāng)我們PC上的軟件運(yùn)行后,當(dāng)我們需要執(zhí)行這類關(guān)鍵算法時(shí),我們會(huì)向這個(gè)Ukey傳遞數(shù)據(jù),然后UKey將結(jié)果計(jì)算出來,返回給PC的軟件上,這樣就避免了用戶直接能夠逆向取得關(guān)鍵的算法代碼,破解也就無從談起了.這也就是為什么到了今天,Ukey保護(hù)仍然非常的流行。

? ????可惜,UKey保護(hù)仍然有諸多的限制,首先就是帶著一個(gè)Ukey賊麻煩,萬一UKey丟了補(bǔ)辦是一個(gè)麻煩事,運(yùn)行軟件插Ukey也是個(gè)神煩的事情,同時(shí),UKey的性能決定了它可能不能執(zhí)行一些過于消耗性能和內(nèi)存空間的代碼,數(shù)據(jù)交互也因帶寬和通訊延遲會(huì)造成性能損失,所以它和VMP保護(hù)機(jī)制一樣,同樣不是一個(gè)省油的燈,同時(shí)開發(fā)人員的水平不到位,該保護(hù)的代碼沒保護(hù),保護(hù)來沒啥用的代碼塞了一堆,也會(huì)給Cracker帶來機(jī)會(huì),而且只要你的軟件夠值錢,你是不是太瞧不起我華強(qiáng)北了秦踪。

????把Ukey拆開來,使用某種"藥水"剝開外層找到內(nèi)部的芯片并接上已經(jīng)熔斷的"讀引腳"(有些芯片連這步都省了,直接熱風(fēng)槍一吹接板讀ROM) 然后再把芯片的代碼給讀出來褐捻。

于是,UKey保護(hù)也宣布淪陷。

????? 你發(fā)現(xiàn),只要是把實(shí)體的東西交到用戶的手上,遲早會(huì)出問題,所以,這個(gè)Ukey保護(hù)現(xiàn)在大部分情況下變成了帶數(shù)字證書的網(wǎng)絡(luò)驗(yàn)證模式,這類的關(guān)鍵代碼從Ukey轉(zhuǎn)移到了服務(wù)器上,數(shù)據(jù)交互通過網(wǎng)絡(luò)來做.其實(shí)這種保護(hù)機(jī)制和Ukey保護(hù)原理是一樣的并沒有什么本質(zhì)的區(qū)別,但同樣處于網(wǎng)絡(luò)帶寬也延遲的考慮,同樣具有一定的性能損失和設(shè)計(jì)缺陷椅邓。

????需要重點(diǎn)提及的是,這類網(wǎng)絡(luò)保護(hù)的手段必須專門設(shè)計(jì)以保護(hù)程序中的一系列關(guān)鍵"功能"代碼而不是"防破解"代碼(比如代碼解密,注冊(cè)驗(yàn)證),因?yàn)楹笳邘缀鯖]啥卵用仍然能夠?qū)?防破解"的代碼清除或Dump解密代碼或偽造本地服務(wù)器實(shí)現(xiàn)破解柠逞。

? ???? 所以你指望一堆什么x盾,x寶一鍵能一勞永逸一鍵保護(hù)程序,程序必須經(jīng)過專業(yè)碼農(nóng)而不是彩筆專門的設(shè)計(jì)才能起到其應(yīng)有的保護(hù)效果。

? ????但現(xiàn)實(shí)情況是,處于用戶離線運(yùn)行和性能延遲瓶頸的考慮,這種網(wǎng)絡(luò)保護(hù)設(shè)計(jì)的往往都有很大的缺陷,因此,并不是說這東西不好,而是理想很豐滿現(xiàn)實(shí)很骨干,實(shí)在無能為力啊景馁。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末板壮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子合住,更是在濱河造成了極大的恐慌绰精,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件透葛,死亡現(xiàn)場(chǎng)離奇詭異笨使,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)僚害,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門硫椰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事靶草√阋龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奕翔,是天一觀的道長(zhǎng)裕寨。 經(jīng)常有香客問我,道長(zhǎng)派继,這世上最難降的妖魔是什么宾袜? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮互艾,結(jié)果婚禮上试和,老公的妹妹穿的比我還像新娘讯泣。我一直安慰自己纫普,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布好渠。 她就那樣靜靜地躺著昨稼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拳锚。 梳的紋絲不亂的頭發(fā)上假栓,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音霍掺,去河邊找鬼匾荆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杆烁,可吹牛的內(nèi)容都是我干的牙丽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼兔魂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼烤芦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起析校,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤构罗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后智玻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遂唧,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年吊奢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盖彭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谬泌,靈堂內(nèi)的尸體忽然破棺而出滔韵,到底是詐尸還是另有隱情,我是刑警寧澤掌实,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布陪蜻,位于F島的核電站,受9級(jí)特大地震影響贱鼻,放射性物質(zhì)發(fā)生泄漏宴卖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一邻悬、第九天 我趴在偏房一處隱蔽的房頂上張望症昏。 院中可真熱鬧,春花似錦父丰、人聲如沸肝谭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)攘烛。三九已至,卻和暖如春镀首,著一層夾襖步出監(jiān)牢的瞬間坟漱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工更哄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芋齿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓成翩,卻偏偏與公主長(zhǎng)得像觅捆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捕传,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 2022-08-31 一. 數(shù)算恩典: 1. 感恩爸爸是一個(gè)強(qiáng)大的人惠拭,讓我感到有力量; 2.感恩爸爸勤勞勇敢庸论,我們...
    WT梧桐閱讀 99評(píng)論 0 0
  • 視頻里的投機(jī)藝術(shù)家是我的朋友燕屌絲 曾經(jīng)跟我在發(fā)財(cái)康做了四年的同事 有人說一千個(gè)人眼中就有一千個(gè)發(fā)財(cái)康职辅, 在他的眼...
    第七章的尾注閱讀 88評(píng)論 0 0
  • 亞馬遜如何上傳產(chǎn)品?首先先點(diǎn)擊目錄然后選擇添加商品聂示,進(jìn)去之后需要先選擇商品的類別域携,也就是選擇類目,選擇完之后鱼喉。先把...
    深度鏈小汀閱讀 155評(píng)論 0 0
  • 約翰.斯坦貝克秀鞭,美國(guó)作家趋观,諾貝爾文學(xué)獎(jiǎng)得主之一,我讀他作品之一的譯作锋边,《Travels with Charley ...
    空山不語閱讀 250評(píng)論 0 2
  • Length and Rhythm In artful prose, on the other hand, len...
    Thinker閱讀 146評(píng)論 0 1