發表文章

目前顯示的是 4月, 2023的文章

文章總列表

CANON G3000 廢墨歸零

圖片
緣起 居家IT工程師今晚急件:修復故障的 Canon G3000印表機 ,機器噴了0x5B00錯誤碼,代表集墨棉已滿。大概兩年前我已經 改裝廢墨瓶 ,顯然這個故障碼是軟體功能 錯誤修正 搜尋自己blog和CANON,很快撈到SOP,立刻按表操課 關機狀態,按著stop不放,再按下電源鍵不放,先放開stop鍵 電源鍵不放,按stop 五下(按一下燈會左右跳) ,兩指放開 (綠燈會閃爍) 等到綠燈持續亮,放入紙張,按stop 三下,電源鍵一下,列印出D=100.2 放入紙張,按stop 五下,電源鍵一下,列印出D=00.0(歸零) 放入紙張,按stop 三下,電源鍵一下,列印出總覽D=00.0(空白也沒關係) 電源鍵一下,關機 電源鍵一下,開機完成 戰果 離上次修正過了兩年,廢墨瓶真的增加不少戰果                                印表機總頁數TTL/COPY=12028/01934;上次8375/1715;看起來兩年印了快4000張,讚啦 結語 CANON公司抱歉,下次買印表機再給你們賺,維護費我自己賺了!明天給貓吉買個小玩具吧

修補執行檔

圖片
緣起,錯誤模型和勝利條件 某次我得修補執行檔跳過錯誤,這篇記錄當時的技巧和指令。測試平台是Raspberry Pi 3B。錯誤的程式如下圖,記憶體指標指向0,然候對這個指標存取,程式就死掉了。勝利條件是,程式正常跑完即可 修補的指令1 把執行檔轉成文字檔再反轉,而且還能執行。假如做得到,那就能對文字檔動手。時間有點久,指令都忘光了!chatgpt竟然直接給答案,而且精準無比! In Linux, how to use od to dump binary file into HEX od -An -t x1 -v a.out -A n,不要印address -t x1,格式用hex,每次1byte -v,一堆0也不要跳過 What if I want to everything in single line od -An -t x1 -v a.out | tr -d '\n' How to convert continuous space in text file into single one od -An -t x1 -v a.out | tr -d '\n' | tr -s ' ' > a.txt How to reverse the hexdump output to binary xxd -r -p a.txt > q.out 至此準備工作完成,接下來對文字檔動手吧 修補的指令2 使用objdump -d進行反組譯,下面的指令會跳入func,讓他不要跳進去就好 打開上一段a.txt,確實有這道指令!搜尋的順序要相反:eb_ff_ff_ee -> ee ff ff eb 順便找到NOP指令的編碼,換成00 00 a0 e1 轉回執行檔再看一下指令,確實換成NOP惡搞成功了!執行後也不會當機了 修補的指令3 直接編修指令非常容易出錯,給指令稿比較實在。關鍵的修補命令和執行結果如下 結語 需要直接修補執行檔的機會不多,下次要用大概也困難重重。此文記錄下當時用的指令,希望這輩子不要再幹這個事了