痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 5787|回復: 27

COSMIC for STM8S C Compiler 8K/32k Limited DIY成全功能版

[複製鏈接]
發表於 2014-12-14 00:14:49 | 顯示全部樓層 |閱讀模式
本文章最後由 jojoling 於 2014-12-14 12:42 AM 編輯

最近真有趣,剛在摸什麼東東時,就剛好有人會跟你聊到這些東東~
這篇是來自另一篇:
http://bbs.pigoo.com/thread-54529-1-1.html
就順手又手癢自己動手改了它~

像這種全功能只是大小限制的,決對不用怕功能會被閹割掉。

先來介紹介 8K limited 這版吧,最愛這版了,因為它並沒有外加  FlexNet的商業保護限制。但事實證明,8K 它直接把 clib 移除不放進來。

先設好使用  8k limited 這版。
2014-12-13_024818.png

修改程式,另其超出8K 並產生  error message。
2014-12-13_025043.png


由上圖可得到2個訊息:
cxstm8 是 cosmic 的 C Compiler
2014-12-13_025538.png

castm8為 cosmic 的Assembler ,會被 cxstm8所呼叫。
2014-12-13_025552.png

用一隻非常有名的工具軟體 w32dasm 8.93~歷久不衰, 躺在我的硬碟超過15年以上
打開並反組譯它~
很好,發現沒殼加密。
觀查程式碼,很好,很標準的 C 語言產生的機器碼。
看來跟小菜一盤一樣。
2014-12-13_025701.png

打開 string data references。
很好,資料區段完全的明碼,沒被加密。
找到我們需要的 error message 並點下去。
2014-12-13_025741.png

2014-12-13_025819.png

2014-12-13_025843.png

找到我們需要的程式片段~發現一個有趣的數字 0x2400
並猜測後修改它。
2014-12-13_025904.png
2014-12-13_025952.png


雖然 error message 不再出現在,但程式還是回傳錯誤結束。
那就簡單的搜尋一下程式碼吧~利用 0x2400這個字找一下看看。
是不是有別的地方也有這種數字。
結果發現共有3處地方,看起來都滿像是這種檢查,二話不說,動手改掉。

2014-12-13_030855.png

2014-12-13_030930.png

2014-12-13_031014.png

搞定第一步,真的是沒什麼技術性。
緊接著發現有另一隻需要改: clnk.exe
2014-12-13_031616.png

重覆上述的簡單工作:
切入 error message 產一點~
尋找可能發生片段,又找到魔法數字 0x2400
改了它並全域搜索一遍,發現共2處。
patch它。
2014-12-13_031759.png

2014-12-13_031839.png

2014-12-13_032007.png

2014-12-13_032040.png

8K 限制版到此搞定。但發現只版沒有 clib.exe
2014-12-13_032600.png


只有再次開工,搞搞 32k 限制版:
2014-12-13_033335.png

以字串 "too much code" 來切入~~
有找到檢查點~
但發現靜態分析沒法看到是誰對記憶體的運算~
2014-12-13_033513.png

2014-12-13_033611.png

2014-12-13_033640.png

下一步,準備拿出動態分析工具~
因此程式(castm8 比較特太,直接載入會有 working path 的問題,所以設定從命令列啟動。
同時做一隻 t.asm 來產生 error.asm
2014-12-13_041208.png

確定可正確產生 error message 後,準備從命令列啟動一隻也是很多年很有名的程式,躺在硬碟10年了。百用不過時。
2014-12-13_041419.png

此畫面是我慣用的配色 ^^
常時間下來,眼睛比較因光線而吃力。
2014-12-13_044539.png

運行到主程式起點後。選擇搜尋列出程式內,所有可能對映的字串與呼叫位址。(因為沒加殼保護,所以簡單就可以開始追蹤了)
2014-12-13_044637.png
2014-12-13_044705.png

直接切入到了產生 error message 的程式碼。
2014-12-13_044739.png

往上看就會發現我們這次的目標記憶體位址  0x53670C 裏的值變化。
設定一下畫面,令底下 記憶體視窗可以直接觀查到它。
2014-12-13_044818.png

我們需要來  trace 誰動了它~
2014-12-13_044920.png


reset 後重跑,系統會停了下來,代表真的有人去動它,這是好事,因為很快就可以收工了。假設都好像是對的。
此2張圖,會發現在同一個副程式讀取後產生中斷停下來,離開前又寫入產生中斷停下來。
2014-12-13_045050.png
2014-12-13_045158.png

停了下來,我們就看底下視窗的數字變化,發現這個副程式 run 了2遍,在離開前寫入的值就變成了 0x8000~
發現了這個魔法數字 (0x8000 = 32K bytes)~
其實就是這個程式片段是用來解密用的,用一個程式設計師常用的小手段  XOR 來加密與解密。
任一數,只要對同一個值 xor 2次,都會得到原值。
任一個bit,對1 XOR 會得到反相。
任一個bit,對0 XOR 會得到同值。

同時圖上發現了加密的值存在 0x51A02C ,加密的key存在  0x51A030
分析此加密值與加密的key
2014-12-13_045218.png
2014-12-13_045613.png

當然就是修改它了喔~快快收工去~
結果改完後,當然又是 error message 不會出來了,但程式還是產生  error code而結束。
此時回到我們之前的分析,其實它有另外一個檢查機制會與這個位址比較值相不相同
0x536744這個位址,在前幾張圖裏有出現,當時有說了一下需注意。
2014-12-13_050051.png

對記憶體址0x536744 重作一次上述的動作,也會找到一小段程式碼,也是來 XOR之類的動作。
只是,這次位址的順序有點不同,它是固意的(其實設計的人以為耍這個小聰明,等於是多了一個保護機制)。
就依此圖改了它吧。讓它早點去睡覺。
2014-12-13_050404.png

2014-12-13_054440.png

2014-12-13_055117.png

2014-12-13_055404.png




這步也搞定了。
2014-12-13_050936.png


此文章目前只描述了修改 8K/32K限制。
其實在 32K 版裏,存在著一個商業保護,只是它是無限期的評證。但是都需要取得它。
那個是有名的 FlexNet (以前的名字為 FlexNet)。
這個10幾年就聽過了,一直沒玩過它。不過網路上有很多文章在討論它。


報告完畢~


{:14_1480:}




到底這2隻有多久呢?
show  一下~
2014-12-13_051827.png









補充內容 (2014-12-14 01:22 AM):
錯誤修正: FlexNet (以前的名字為 Flexlm)

評分

15

查看全部評分

發表於 2014-12-14 01:07:19 | 顯示全部樓層
耶!  :sam03
沒程度,寫啥毀,看不懂
嘉芬吧!

評分

1

查看全部評分

發表於 2014-12-14 14:15:40 | 顯示全部樓層
看到樓主這篇, 讓在下想起以前寫程式兼抓蟲的日子....

不過在下的功力沒樓主那麼強, 連反組譯和動態除錯都派上用場.

評分

1

查看全部評分

發表於 2014-12-14 20:55:22 | 顯示全部樓層
這盤小菜一定是巨人的小菜  {:14_1476:}

評分

1

查看全部評分

發表於 2014-12-14 22:19:28 | 顯示全部樓層
太厲害了,佩服啊。n_111|

評分

1

查看全部評分

發表於 2014-12-14 22:24:21 | 顯示全部樓層
emc88888 發表於 2014-12-14 02:15 PM
看到樓主這篇, 讓在下想起以前寫程式兼抓蟲的日子....

不過在下的功力沒樓主那麼強, 連反組譯和動態除錯都 ...

難道你都不知道他是專門吃軟飯的嗎 ? :sam10
其實真正吃軟飯的是我啦(飯加菜湯) ...

評分

1

查看全部評分

發表於 2014-12-14 22:30:58 | 顯示全部樓層
scottwang 發表於 2014-12-14 10:24 PM
難道你都不知道他是專門吃軟飯的嗎 ?
其實真正吃軟飯的是我啦(飯加菜湯) ...  ...

就因為軟(體設計)飯難吃,
所以在下很早就轉去跑外勤維修(其實是夾網路線兼周遊列國)....
發表於 2014-12-14 22:41:28 | 顯示全部樓層
Flexlm這個在各大EDA上都會有用到東西~以前為了找快樂版本,常常中毒!
現在不搞了~能用就好了~
很好奇在軟體中怎麼利用Flexlm作不同License 的授權呢?
謝謝!

評分

1

查看全部評分

 樓主| 發表於 2014-12-14 22:42:56 | 顯示全部樓層
本文章最後由 jojoling 於 2014-12-14 10:49 PM 編輯
jerrykan 發表於 2014-12-14 10:41 PM
Flexlm這個在各大EDA上都會有用到東西~以前為了找快樂版本,常常中毒!
現在不搞了~能用就好了~
很好奇在軟體 ...


那是另一篇的主題~
寫文章比寫程式還麻煩~
 樓主| 發表於 2014-12-14 23:16:48 | 顯示全部樓層
jerrykan 發表於 2014-12-14 10:41 PM
Flexlm這個在各大EDA上都會有用到東西~以前為了找快樂版本,常常中毒!
現在不搞了~能用就好了~
很好奇在軟體 ...

jerrykan大你好,

你的問題應該是為什麼不同電腦,會產生不同授權嗎?
如果是的話,是利用每一台電腦一些不容易變動的資訊來設計。
如果你問的是,為什麼可以有不同制限功能的授權~
這個問題是軟體開發時加進去的,另其本來就有此分類。
發表於 2014-12-15 00:32:46 | 顯示全部樓層
雖然看不懂吃軟飯的人這餐飯菜是什麼,但是可以看到“破”程式的完整過程,真是有趣。
吃軟飯的人果真腦袋比較聰明,不像我只會傻傻的啃硬骨頭,只有既羨慕又讚嘆的份。

評分

1

查看全部評分

 樓主| 發表於 2014-12-15 00:51:34 | 顯示全部樓層
duke83 發表於 2014-12-15 12:32 AM
雖然看不懂吃軟飯的人這餐飯菜是什麼,但是可以看到“破”程式的完整過程,真是有趣。
吃軟飯的人果真腦袋 ...

duke83您誇大了~

每個專業都有獨立的一片天空~
這個只是娛樂娛樂~當作欣賞一部電影~
加張椅子,準備的爆米花~
爽受一下優閒的假日~
發表於 2014-12-15 01:09:30 | 顯示全部樓層
emc88888 發表於 2014-12-14 10:30 PM
就因為軟(體設計)飯難吃,
所以在下很早就轉去跑外勤維修(其實是夾網路線兼周遊列國).... ...

我也是跑"外勤維修",專修別人的腦袋,修好了腦袋,就能把錢放入口袋了 ... :sam13
 樓主| 發表於 2014-12-15 01:26:18 | 顯示全部樓層
scottwang 發表於 2014-12-15 01:09 AM
我也是跑"外勤維修",專修別人的腦袋,修好了腦袋,就能把錢放入口袋了 ...  ...

其實這幾年我的主業,真的不是寫程式~~
是騙客戶~把案子騙進來~
發表於 2014-12-15 01:58:43 | 顯示全部樓層
jojoling 發表於 2014-12-15 01:26 AM
其實這幾年我的主業,真的不是寫程式~~
是騙客戶~把案子騙進來~

像你們那樣的公司,那些被你騙的客戶應該也是會很高興,可能還會報怨,你怎麼沒有早點來騙我,是看不起我嗎? :sam45

 樓主| 發表於 2014-12-15 02:12:16 | 顯示全部樓層
scottwang 發表於 2014-12-15 01:58 AM
像你們那樣的公司,那些被你騙的客戶應該也是會很高興,可能還會報怨,你怎麼沒有早點來騙我,是看不起我嗎?  ...

坦白說是滿多客戶喜歡我去騙的,
因為謊話都會成真~
不過一樣米養百種人,某家客戶才不理這些,他們只想逼你在狀況外說 yes~
或是找一些完全不懂的妹,騙她們說 yes~
碰到這種客戶,基本上是恨死我了~
發表於 2014-12-15 03:16:04 | 顯示全部樓層
jojoling 發表於 2014-12-15 02:12 AM
坦白說是滿多客戶喜歡我去騙的,
因為謊話都會成真~
不過一樣米養百種人,某家客戶才不理這些,他們只想 ...

像我也只是告訴客戶,那些功能我們可以做,那些不能做,若客戶一定要做的,而我們又無法做的,那也只能放棄案子了,或者客戶放棄某些功能也可以.
發表於 2014-12-15 11:24:41 | 顯示全部樓層
jojoling 發表於 2014-12-14 11:16 PM
jerrykan大你好,

你的問題應該是為什麼不同電腦,會產生不同授權嗎?

jojoling大您好,
      我想問的是在軟體開發時就就加進去的,
利用授權,做一些功能上的限制,或是軟體使用期限等功能呢?記得以前flexlm它
是利用網路卡的MAC Address 或是安裝HD的序號來編碼,這就是您說的"每一台
電腦一些不容易變動的資訊"嗎?
 樓主| 發表於 2014-12-15 11:31:40 | 顯示全部樓層
jerrykan 發表於 2014-12-15 11:24 AM
jojoling大您好,
      我想問的是在軟體開發時就就加進去的,
利用授權,做一些功能上的限制,或是軟體使用 ...

jerrykan大你好,

坦白說你的問題有點讓我不知怎麼回答,因為我有點看不清楚你問題背後的真正問題是什麼?
發表於 2014-12-15 12:42:54 | 顯示全部樓層
jojoling 發表於 2014-12-15 11:31 AM
jerrykan大你好,

坦白說你的問題有點讓我不知怎麼回答,因為我有點看不清楚你問題背後的真正問題是什麼 ...

我個人猜想可能是類似於

A,B,C,三台電腦同時安裝了同一套軟體

同時透過FLEXLM來取得軟體授權.

但是A.B.C三台分別開通不同功能

像是A只能容許8K LIMIT,B則是32K LIMIT,C則無限制

---------------------------------------------
然後他的第二個問題應該是,如果可行的話,是不是能透過類似
抓取網卡MAC ADDRESS或是HDD 序號這類來達成目的

以上,是我個人的猜測
發表於 2014-12-15 13:27:27 | 顯示全部樓層
conbawa 發表於 2014-12-15 12:42 PM
我個人猜想可能是類似於

A,B,C,三台電腦同時安裝了同一套軟體

謝謝conbawa大大翻譯~
 樓主| 發表於 2014-12-15 13:40:27 | 顯示全部樓層
jerrykan 發表於 2014-12-15 01:27 PM
謝謝conbawa大大翻譯~

lmtools.exe 是這家公司出的,同時也會顯示一些它要的資訊:

2014-12-15_133316.png

基本上,它就是會從你電腦取一組身份證號碼~規則由它他定~
mac address 與 HDD serial number 只是其中之一或可選擇~

發表於 2014-12-16 21:30:30 來自手機 | 顯示全部樓層
大,你讀過 Trac
發表於 2014-12-16 21:32:39 來自手機 | 顯示全部樓層
大,你讀過 fraivia 還是啥名那個老外的文章嗎
 樓主| 發表於 2014-12-17 00:20:23 | 顯示全部樓層
xiaolaba 發表於 2014-12-16 09:32 PM
大,你讀過 fraivia 還是啥名那個老外的文章嗎

報告 xiaolaba大 ,

你是說 http://www.woodmann.com/fravia/ 嗎?
應該多少吧,以前學生時代超愛搞這些有的沒有的~
都是過去式了~
 樓主| 發表於 2014-12-17 01:15:30 | 顯示全部樓層
xiaolaba 發表於 2014-12-16 09:32 PM
大,你讀過 fraivia 還是啥名那個老外的文章嗎

喔~
xlaolaba大,

你是在說這個嗎?
http://bbs.pigoo.com/thread-54572-1-1.html
發表於 2014-12-17 20:39:23 | 顯示全部樓層
這....我只會用GM7...我買正版的0.0

以前玩仙劍都靠他 這支軟體很強大不見得要弄遊戲

拿來掃HEX BIN 都行....操作起來很像啾啾林桑的做法

gm.jpg

圖網路上抓的...已經進化到GM9了

這肯定不少7年級生用過XD

評分

1

查看全部評分

 樓主| 發表於 2014-12-18 16:12:53 | 顯示全部樓層
tony6605 發表於 2014-12-17 08:39 PM
這....我只會用GM7...我買正版的0.0

以前玩仙劍都靠他 這支軟體很強大不見得要弄遊戲

以前的年代改遊戲的軟體~
從 DOS 時代開始大約有以下的工具..

PcTool.exe 那時 hexedit 很少,這種工具就被拿來改遊戲記錄檔用~
debug.exe 利用 debug 的特性,編寫一些命令令其當成 loader & patcher 載入遊戲~
GB4 (Game  Buster )
FPE 整人專家
Game Wizard 遊戲巫師
Game Master 遊戲大師 ,這個算是比較後期的
應該是還有一些,後來就 GM 發揚光大~

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-23 04:12 PM , Processed in 0.368110 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.