熱點推薦

查看42293 回復121 收起左側

[學習交流] 【學寫外掛必看感悟】一個外行游戲輔助作者的寫掛經歷

打印 上一主題 下一主題
  [復制鏈接]
神秘人士
樓主
神秘人士  發表于 2015-7-13 13:45:47 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
NBE微信公眾平臺
關注NBE好長一段時間了。看到前一段時間,有一個游戲輔助作者同行發的連載系列文章《一個苦逼游戲輔助開發人員的自述》,真得是深有感觸,所謂外行看熱鬧,內行看門道,看看評論,有人說他是在吹牛逼,有人說他是靠自己想象力天馬行空亂寫,我也只能是“微微一笑”呵呵!因為我也算是個外行!


今天,我也來分享一下自己的歷程吧,是微微一笑,還是呵呵,都無怕所謂了。

對于游戲輔助行業而言,我屬于“外行”。我本身算得上比較“老”的一代程序員了,趕上了2000年互聯網泡沫的尾聲。在學校的時候就喜歡搞一點黑客、破解什么的,但僅僅是出于興趣愛好。畢業之后,一直從事軟件開發相關的工作,做過網絡游戲,開過互聯網公司,眨眼間,在軟件行業里面混了十幾年了。興趣原因,經常混跡于當時的看雪學院、小榕軟件、綠盟論壇等,膜拜各路大神的時候,也在默默的積累技術。

最早準備寫輔助是當時玩完美的游戲,完美世界、誅仙之類的網游。現在的游戲輔助基本框架也都是在那個時候積累下來的。因為搞傳統軟件研發養成的習慣,輔助框架寫的質量還算可以,并且文檔什么的也比較規范,算是給現在的工作打下了比較好的基礎,很多東西都可以重用。當時有一個本地的游戲工作室想讓我給他們專職做輔助,但是考慮到種種因素,沒有答應,后來輔助的開發進度也一拖再拖,最后也逐漸不好意思和他們聯系了。再后來,工作越來越忙,也就把這個事情放下了。

再后來,朋友的朋友找到我,希望給他開發輔助,當時有一搭沒一搭的聊,因為自身收入還不錯,所以也就沒有很上心。再后來,礙于朋友的面子,加上對方一催再催,只好答應對方。

對方是一個不算大的網絡游戲工作室,大約有60臺E3+32G電腦主機,在當時算是不錯的配置了。游戲工作室老板A是一個非常聰明能干的小伙子。

A從輔助代理商人那里買的游戲輔助,但是因為游戲工作室不大,所以價格、服務等方面都不能讓A滿意。因為很久不碰輔助的東西了,并且當時要做的游戲J3我也沒有玩過,所以我讓A給我了一份他正在用的輔助。經過分析之后,感覺能做,于是開始動工。

當時的J3是有宏接口的,并且出金思路主要圍繞試煉副本和幫會釣魚,所以核心功能很容易就完成了,先讓A跑起來。在當時,J3已經是被很多游戲工作室稱為夕陽游戲了,開服時間太長了,但是A認為,J3是點卡游戲,生命周期本身就會相對較長,并且,如果出金思路正確,可以在做上至少1年。現在看,當時A的思路是非常正確的,因為,現在已經過去了一年半多了,他們依然還在圍繞J3做。

核心跑起來之后,游戲工作室需要大量的人工去看機器,并且,因為J3自身的優化的問題,單機的多開受到了極大的限制。圍繞人工問題,我又制作了控制臺,可以同時監控本機各個窗口的角色、等級、狀態、紅藍、地圖/位置、背包、金錢、體、精、幫貢等一系列信息,這樣,游戲工作室員工只需要看一眼控制臺,就可以了解本機的所有窗口的掛機情況。

圍繞效率問題,我徹底修改了掛機方式,通過降低渲染幀數的方式,把幀數降低到了30秒一幀,基本上算是解決了CPU占用過高的問題。基本上前面提到的E3機器可以開48開沒有什么壓力。這次的修改大約陸陸續續用了我半年的時間。

至此,輔助的整體框架已經和最初的設計天差地別了。最初僅僅是要制作一個簡單的插件,通過修改游戲客戶端的資源包加載到客戶端就可以了。但是現在,已經變成了一個主控臺,通過主控臺自動批量啟動、自動登錄,支持卡位報警、能夠運行自定義腳本、能夠定時運行命令、能夠定時關閉客戶端(每周1周4停服維護),然后針對客戶端能夠進行鎖屏,能夠進行游戲內自定義腳本調試、錄制等等等等……

一切看上去那么美好,我都深深的為自己的偉大創舉而內牛滿面……

然而,2014年暑假期間,相信做J3的朋友都不會忘記,J3開始大面積封停。那段時間,基本上起一批封一批,起了就封、再起再封。A和他朋友的游戲工作室損失慘重。那段時間也恰巧碰上我的工作也很忙,只能晚上熬夜調試,找問題、找方案。基本上那段時間每天只能睡三四個小時,其余的時間,要么做公司的事情,要么在調試輔助。

整整2個月的時間,處于崩潰的邊緣。因為嚴重睡眠不足,上下班路上開車,半個月三次事故,其中有兩次發生在4天內,也就是剛從4S店把車提出來的第二天,就又來了一次事故。所幸都是刮擦和追尾事故,也沒有碰上對方是豪車,前后兩個保險杠都換過了,噴漆也免不了。

期間,不止一次想要放棄,畢竟自己的工作收入也不錯,加上這么多年的打拼,也算是衣食無憂了,真沒有必要這么拼命了。然而,A和他朋友的游戲工作室已經都切換到了我的輔助,我有退路,他們卻沒有退路。

思量再三,只能堅持。終于,通過分析客戶端和網絡封包,找到了J3上報的檢測數據,找到了規則,就很簡單了,APIHook,把異常部分跳過去就OK了,對于無法跳過的規則,簡單粗暴的重啟客戶端重登錄即可,畢竟無法處理的幾率比較低,好幾天才能碰到一次。終于,經過幾次調整之后,總算是穩定了。

美美的睡了兩三個周之后,問題又來了,J3又開始進行無節操的封停了。檢查之后發現,客戶端的檢測規則沒有變化,那么問題只能是出在服務器端了。因為在座APIHook的時候,我已經對本機硬件序列號、MAC地址、局域網IP等信息都做了處理,那么服務器端能夠檢測的只能是公網IP了,應該是通過類似于對網吧IP段做白名單,個人的同一個IP如果同時登錄的客戶端過多的話,就會進入封停判定。我讓A去嘗試同IP登錄上限,同時開始考慮應對方案。

因為A的機器前邊是48開或者多的掛到50開,而Windows自身又沒有機制能夠對多個網卡進行可定制的分流,所以這個多IP的方案又讓我犯了難……
考慮再三,我讓A直接使用市面上的IP代理軟件先跑起來。跑了大概有2個周的時候,A告訴我,還會有封停。初步考慮IP代理可能會一個IP賣給多個游戲工作室,從而導致封停問題。

至此,沒有退路和借口的我又開始了漫漫的熬夜的日子。其實解決方案倒也簡單,我自制了個路由器的ROM,讓路由器充當代理服務器,然后在本地使用LSP劫持了通訊的函數,通過自己寫的代理客戶端完成通訊,通訊時按照配置選取通過那個代理服務器通訊。雖然各種不完美,但總算是能夠穩定的跑起來了。

測試沒有問題之后,A和他的朋友們開始批量采購定制的路由,批量拉網線。據說光A自己就新增了近600條網線。

A的游戲工作室規模越來越大,管理也越來越復雜。在完成了定制路由之后,休息了沒幾天的我又被A要求想辦法降低人工。

沒辦法,顧客就是上帝……

于是,我又制作了網絡控制臺,可以監控多臺機器上的角色,同時能夠進行一些簡單的維護工作,像重啟客戶端、發送命令什么的都可以在網絡控制臺上。又是一個多月的熬夜,終于算是穩定運行了。至此,A的160多臺機器,只需要3個員工就可以輕松維護,時不時還能休個假、聚個餐什么的。

而我,因為長時間的熬夜,身體被嚴重透支,頭暈、耳鳴、神經衰弱,腰椎和頸椎也都出現了問題。嚴重的一次,左手拿了一杯水,硬生生的給抖的灑了一地,死活沒法送到嘴里。當時正好快年底了,從公司請了年假,帶著老婆孩子省內逛了一圈,玩了大概半個月,身體才逐漸好了一點。

休整回來后,陸陸續續完善了一些功能。像11月份更新后出售需要確認、4月份版本更新后神行的過圖問題等等,都是一些小的調整。比較大的改動是做了自動合成螢石的功能,后來合成螢石不需要跑洗煉臺了,辛辛苦苦做的半仙羅盤、試煉臺尋路什么的也就都沒有什么用處了。

運行到今年,剛過春節,A又找到我,說出金效率隨著金價的降低,需要調整了,否則游戲工作室開始沒有利潤了。

于是乎,又一次開啟熬夜模式,比較湊巧的是,公司也恰好在這時開始一個重要項目的合作,前期的準備工作交給我來完成。熬夜,熬夜再熬夜……

經過把試煉和釣魚功能完全推翻重寫,終于能夠做到5000分裝備的號平均4分30秒左右試煉通過,全部用來打試煉的話,每天大概能打330封到350封信,配合每晚的釣魚活動,只需要極少量的副本就能把精力完全消耗光。

就在前幾天,新版本更新后五行石合成界面變了,不能合成五行石了,又進行了簡單的調整。

林林總總,也算是在游戲輔助這個圈子里做了幾年了。

這是一個嚴重透支體力精力的工作。在這幾年里,身體每況愈下,到現在已經算得上是渾身是病了。如果按照投入產出比來說的話,也沒有大家想象的那么劃算。我現在的工作,每年能拿個小20萬,加上年底分紅,也能有個10幾20萬吧,并且基本上每年都能夠上一個臺階。而寫游戲輔助,付出的要比工作更多,雖然看上去一年也能有個幾十萬的收入,但是真的是太累太累了。

我有的時候就在想,如果我拿寫游戲輔助的這些精力放在工作上,或者再重新創業,應該不會比現在做輔助收益少。但是無奈,上了這條船,游戲工作室一幫人還在指望著我,只能再堅持一段時間了。

大約2個月前,我也和A也進行了一次長聊,雖然沒有直接說不想開新項目了,但我告訴他,應該考慮一下雙項目并行,不要把寶全押在J3上面了,我真的累了。

我估計J3再做1年應該沒有大問題,但是,J3結束之后,我不想再繼續寫輔助了。畢竟也老大不小了,體力和精力都跟不上了,游戲輔助這個行業還是年輕人的天下。

對于想入行的,在NBE徘徊的年輕人,我想說,這個行業其實沒有那么難,同時也沒有那么美好。技術層面如果要開發精品的話,還是得靠C/C++來支撐。如果是需要趕暴利期的話,那就隨意了,什么開發快用什么,像什么E語言什么的,雖然我沒有學過,但是可以肯定它學起來很容易。入門很簡單,網上有大批的教程。

但是想要做好輔助外掛,還是需要有比較全面的知識的。比如常見的系統API什么的,肯定是要熟悉的,而如果是注入式的內掛的話,各種注入方式、各種Hook技術也是必須要會的。比如,我的這個輔助,算不上完美、也算不上強大,里面用到的技術我簡單的把想到的羅列一下:

一套自己的網絡框架,能夠處理客戶端和控制臺之間的各種消息通訊,同時也用在了單機控制臺和網絡控制臺之間的通訊上;

一套自己的Hook引擎,用于在關鍵點掛接,比如幀數優化、反和諧等。這里面采用的方式有Jmp跳轉方式的inline-hook、調試中斷(包括int3中斷和硬件中斷),其他的還有內存訪問中斷等;為了配合上下文信息的獲取,還有調用堆棧的處理等;

一套自己的DLL加載器,通過DLL加載器,徹底隱藏注入的DLL,避免被掃描到;

一套自己的資源打包、解包管理,將一些文本、腳本等文件進行打包處理,提高破解門檻;

一套自己的特征碼掃描引擎,能夠根據特征碼自動掃描出exe和dll里面的基址、偏移等信息,減少游戲新版本更新后的基址查找工作量。通過它,我基本上能夠做到開服前更新基址;

一套自己實現的socket代理客戶端,能夠改變制定進程的網絡訪問路徑;

一套基于lua語言的腳本引擎,能夠解析并執行自定義命令及其參數,帶有分支、循環等特性,同時能夠自定義變量、自定義函數等;

暫時就想到這些,有的內容寫的時間也比較久遠了,很多東西都需要翻文檔或者代碼才能想起來了。

如果有別的出路的話,先考慮去工作吧,這個行業的艱辛超過你的想象。雖然我走的算是一路順風順水,但是這些和A的支持、天時地利都分不開。

不要小看一個簡單的輔助軟件。要知道輔助對于Bug的容忍度要遠遠低于普通的項目軟件。要知道,一旦游戲輔助商業化之后,同時運行的數量和持續時間,都遠遠大于普通的商業軟件。

正是因為長時間、大批量的運行,程序的任何缺陷都會被放大。比如試煉中的推石頭關卡,有百分之一的幾率會失敗,那么,在A的游戲工作室里面160臺機器同時運行,就相當于同時運行7000多個窗口,每個窗口每天大約通關320次,其中推石頭關卡出現的幾率是4/9,也就是所有的機器里面推石頭關卡會出現近100萬次,失敗大約1萬次,如果每次失敗增加通關時間2.5分鐘的話,相當于為整個游戲工作室浪費了25000分鐘,這相當于單號打試煉通關5500次,游戲工作室的利潤,就這么被浪費了。

可能會有童鞋質疑,比如J3能不能做,能做的話利潤太低什么的,做過童鞋的可以幫我回應一下,我沒有做過游戲工作室,沒有概念。我只能給出幾個基本的數據:

釣魚進行了加速,基本上魚兒上鉤那個消息一到,就開始了下一次甩桿動作了,省掉了收桿動作,具體的釣魚次數我沒有統計;

試煉之地只打第一層,4500分裝備大約4分40秒,5000分裝備大約4分30秒,6000分裝備大約4分20秒,這都是比較保守的數字;

每條網線跑8個窗口,A那邊的網費比較便宜,每條線每個月30左右;

游戲工作室需要員工3人,加上A自己出貨交易;

基本上能夠做到平價煉號,不賺不虧(腳本+滿級號組隊帶,有工具配合);

聲明:我不賣輔助,不帶隊,不收徒弟,我只是一個外行游戲輔助外掛作者,今天與各位寫輔助的同行分享一下自己的經歷而已。身心俱疲,前言不搭后語,見諒。就說這些吧,諸君見仁見智,有意見使勁拍磚。



您好!您暫時不能瀏覽帖子的全部內容,請 登錄 | 沒有帳號? 立即注冊QQ登錄
良心15 坑貨
  • TA的每日心情
    開心
    2017-4-21 18:29
  • 簽到天數: 26 天

    [LV.4]偶爾看看III

    推薦
    發表于 2015-7-13 20:49:50 | 只看該作者
    NBE微信公眾平臺
    雖然我不懂,但是我全都看完了,要是現在的輔助作者都和你一樣認真,那什么游戲出一個死一個妥妥的,感謝那些沒用的輔助,讓很多游戲還活著
    回復 支持 1 反對 0

    使用道具 舉報

    已拋錨 成長值: 1020

  • TA的每日心情
    奮斗
    2018-10-6 08:00
  • 簽到天數: 569 天

    [LV.9]以壇為家II

    板凳
    發表于 2015-7-13 14:14:31 | 只看該作者
    NBE微信公眾平臺
    好高大上的樣子。

    我只會做點易啊。按鍵精靈這種入門級的東西
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    無聊
    2018-4-17 19:21
  • 簽到天數: 18 天

    [LV.4]偶爾看看III

    地板
    發表于 2015-7-13 14:41:43 | 只看該作者
    才是真正的內部啊,對于我這種機器少的苦逼來說,想開卡也開不到。用市場掛真是死路一條,大神求加qq:22313793,能跟著開幾張卡三四榮幸啊
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-6-19 07:54
  • 簽到天數: 108 天

    [LV.6]常住居民II

    5#
    發表于 2015-7-13 14:59:39 | 只看該作者
    好高大上的樣子
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2017-4-3 12:36
  • 簽到天數: 402 天

    [LV.9]以壇為家II

    6#
    發表于 2015-7-13 17:39:14 | 只看該作者
    這就是一個消費肉體的行業啊
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-11-22 20:37
  • 簽到天數: 568 天

    [LV.9]以壇為家II

    7#
    發表于 2015-7-13 21:22:14 | 只看該作者
    看完了,,大工作室表面風光,風險更大,小工作室看似賺錢少,但風險小
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-11-15 07:57
  • 簽到天數: 239 天

    [LV.7]常住居民III

    8#
    發表于 2015-7-14 08:49:47 | 只看該作者
    我也好像沒看懂,不過也算見識了一個大哥。。大神!!謝謝分享
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2017-11-30 20:17
  • 簽到天數: 302 天

    [LV.8]以壇為家I

    9#
    發表于 2015-7-14 09:55:54 | 只看該作者
    好高大上的樣子。

    我只會做點易啊。按鍵精靈這種入門級的東西
    回復 支持 反對

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    快速回復 返回頂部 返回列表
    北京pk10怎么玩才能输