同事被開,我接手了這樣的代碼,整個人emo了~

大家好,我是東哥。

今天,我看到有網友因爲同事被開,老闆讓他接手同事的項目,當他看到下面這幾段代碼後,整個人都emo了~
說實話,要是我碰上了,整個人也得要崩潰,真可謂世上“最強防禦代碼”,留下這段代碼的大哥,真的是人才啊,擁有了宙斯盾裝備,完全撼動不了,開他的老闆有苦頭喫了😂

說實話,上面這段代碼,感覺多半是被混淆的,你不看原函數根本不知道幹啥的,把所有函數全用數字宏定義,根本不知道幹什麼用的,而且全是指針,就算你有源代碼一個—個看函數都得看—天嗎,想起當年剛畢業給某安全公司寫Cpp代碼的時候,經常被領導戲稱“宏孩兒”,看了這位老哥的代碼後,自侃不如😁

上次跟幾位做技術的朋友聊天,一起聊到“程序員如何擺脫35歲的魔咒?”,一致認爲“在不影響系統性能的基礎上,寫出同事無法維護的代碼”,也許是一種好的辦法,自己寫了一個代碼混淆器,可讀代碼自己留檔,這樣接手你代碼的人一定會emo的,就算老闆招一個新人,如果是一個“菜雞”,看到這樣的代碼,也一定會知難而退;說不定後面老闆搞不定的時候,會聯繫你去幫忙解決,這樣議價權就在你手上了~

在沒有AI之前,也許這樣能擺脫35歲的危機,有了AI也許這種辦法也不行了,我們一起來試試,把這段源碼發給AI,讓它幫我們分析並重新整理成人能看懂的代碼,讓它看看這段代碼究竟在搞什麼鬼😂

這裏,我還是隻給一個簡單的提示詞,沒有寫針對性的結構化提示詞,如果對提示詞感興趣的話,可以訪問這個提示詞倉庫。

網站地址:https://www.songshuhezi.com/tools/short.html

具體提示詞如下:

你現在是一名具有資深開發經驗的C++程序員,擅長將混淆代碼還原成可讀代碼,我將發給你一段C++代碼,站在你的角度來分析這段代碼的作用,將宏定義去掉,並給出你的優化建議,以中文輸出。


好了,我們來看看AI給出的回答,如下圖:

這便是AI給出的最終優化代碼,如下:

#include "bal.h"
extern void ( *1142[ 1 ][ 6 ] )( void );extern void ( *1143[ 1 ][ 6 ] )( void );extern void ( *1144[ 1 ][ 6 ] )( void );extern void ( *1145[ 1 ][ 6 ] )( void );extern void ( *1146[ 1 ][ 6 ] )( void );extern void ( *113 )( void );
void call_function(int x, int index) { void ( * ( *array[ 1 ][ 6 ] ) ( void ) ) = { 1142, 1143, 1144, 1145, 1146 }; (***(*( ( void ( * ( * )[ 6 ] )( void ) ) 114[array[x]] ) + index ))( );}
int main( void ){ call_function(0, 0); while( 1 ) { call_function(1, 0); } return 0;}
從整個過程中,我們可以看出來AI就做了這麼2件事:

  • 將宏定義替換爲直接的函數調用。

  • 使用函數指針數組進行函數調用。


由於AI沒辦法閱讀整個項目的代碼,它也只能幫你到這一步了,總的來說,這種混淆後的代碼真的讓人很頭疼,我反正是打死都不想去分析,太費時間了,因爲我以前經常用ollydbg分析exe,知道這裏面的痛苦,我現在是沒得精力研究這塊了,對這塊感興趣的同學,可以去逛一下吾愛破解、看雪這兩個論壇,裏面有很多脫殼破解的大神😓

好了,說回防禦性編程,可以去看看耗子哥之前寫的一篇文章《寫出讓同事無法維護的代碼!!!》,最近,我正在看耗子哥寫得一本書《左耳聽風——傳奇程序員練級攻略》挺不錯的,在這裏推薦給大家讀讀,也許對你的代碼修養有一定的提升。
比如書中提到了如何成爲一名有競爭的程序員?如何度過中年危機?整體來說,這本書更多是偏向於底層功底,“道”的層面。

上面關於屎山代碼,純屬調侃瞎聊,切勿當真。作爲程序員我們要具備基本的職業素養,拿了別人的錢,就得要好好幹事,提高代碼的質量,使其更加健壯、易於維護和擴展。

說真的,要是你真的遇上這類代碼,咱們能不動就不動!畢竟這代碼一看就讓人血壓飆升,稍不注意,kpi沒了,再改,就真的要原地去世了😂

要是真的沒得辦法了,也得硬着頭皮上,耐心和細緻的分析,如果你覺得自己難以搞定,或者非改不可,建議藉助AI工具來協助你。


最後,想學編程的同學,可以關注一下這個網站,上面的內容很全哦

網站地址:https://www.j301.cn



熱門推薦

  • 外包公司的人寫的代碼,被扒出,罵慘了~
  • 阿里也出手了!Spring Cloud Alibaba AI初體驗
  • Chrome插件:Zotero Connector 一鍵保存網頁參考資料