2016-03-26 28 views
-2

因此,我有一個運行在Arduino Uno上的程序,但是我沒有源文件,我設法使用avrdude來儘管研究如何將其轉換爲原始粗略近似(我知道輸出不會與原始文件相同),但我已經聽說這是可能的,並且非常感謝任何幫助。 下面是該文件的部分已檢索:我已經從Arduino Uno中取出了一個十六進制文件,我怎樣才能將它變回C

:200000000C94B2000C94DA000C94DA000C94DB060C9405070C942F070C94DA000C94DA00A3 
:200020000C94DA000C94DA000C94DA000C94DA000C94DA000C94DA000C94DA000C94DA00F0 
:200040000C94F1090C94DA000C946B0B0C94BD0B0C94DA000C94DA000C94DA000C94DA0026 
:200060000C94DA000C94DA0000C201000100110011000C0000E100000A0025002500210044 
:20008000009600001900390039003600127A00001F004600460044008070000022004D002F 
:2000A0004D004A00004B00003600750075007200403800004A009C009C0099008025000094 
:2000C0007200EC00EC00E900C0120000E900DA01DA01D70160090000D701B603B603B3033B 
:2000E000B0040000B3036E076E076B07580200006E07DC0EDC0ED80E2C010000DC0EC11DBC 
:20010000C11DBE1D00000000240027002A0000000000250028002B000000000023002600F0 
:20012000290004040404040404040202020202020303030303030102040810204080010256 
:200140000408102001020408102000000007000201000003040600000000000000001301F9 
:200160002C0D0C0111241FBECFEFD8E0DEBFCDBF11E0A0E0B1E0E2E7FCE102C005900D92EA 
:20018000A439B107D9F712E0A4E9B1E001C01D92AE3CB107E1F711E0C2E6D1E004C0229739 
:2001A000FE010E94280ECE35D107C9F70E94830D0C942C0E0C940000CF92EF920F938130EC 
:2001C0009105E9F46F5F7F4F19F584E991E062E043E020E00E94C30980EB91E068E049E004 
:2001E00024E005E056E0E52E37E0C32E0E94880387EC91E064E971E00E94C10309C0892B33 
:2002000039F46F5F7F4F21F484E991E00E944B080F91EF90CF90089580E090E06FEF7FEF76 
:200220000E94DC00089581E090E06FEF7FEF0E94DC00089587EC91E00E94D105882369F487 
:2002400087EC91E061E00E949505882331F487EC91E00E943505882319F02FEF3FEF04C0E9 
:200260002091C7013091C801C90108950E941A019093C6018093C50197FD1BC080EB91E049 
:2002800060E041E00E949B0280EB91E060E071E00E94DA0D8BE061E00E94160B8CE060E0AD 
:2002A0000E94160B60ED77E080E090E00E94390A089580EB91E060E041E00E949B0280EB9E 
:2002C00091E061E171E00E94DA0D8BE060E00E94160B8CE061E00E94160B089580EB91E03A 
:2002E00060E142E020E00E94D20280EB91E060E040E00E949B0280EB91E062E271E00E9497 
:20030000DA0D8CEA92E040E855E260E070E00E94F80B87EC91E060E071EE0E94680687EC74 
:2003200091E00E940B06882379F180EB91E060E041E00E949B0280EB91E06FE271E00E94E8 
:20034000DA0D60ED77E080E090E00E94390A80EB91E060E041E00E949B0280EB91E06DE3B5 
:2003600071E00E94DA0D8BE061E00E94D70A8CE061E00E94D70A8BE060E00E94160B8CE06A 
:2003800061E00E94160B089580EB91E060E041E00E949B0280EB91E06FE471E00E94DA0D37 
:2003A000FFCF0F931F938C01FC01868160E00E94160B81E090E00E94920AF801868161E037 
:2003C0000E94160B81E090E00E94920AF801868160E00E94160B84E690E00E94920A1F9180 
:2003E0000F910895CF92DF92EF92FF920F931F93CF93DF93D82EC92E282F392FC9018C01A1 
:20040000C0E0D0E0E62EFF24F801878161E00E94D70AB7010C2E02C0759567950A94E2F75F 
:200420006170F80187810E94160B21960F5F1F4FC830D10549F78D2D9C2D0E94D101DF911F 
:20044000CF911F910F91FF90EF90DF90CF900895CF92DF92EF92FF920F931F93CF93DF9367 
:20046000D82EC92E282F392FC9018C01C0E0D0E0E62EFF24F801878161E00E94D70AB70165 

現在,我相信這是十六進制,或者至少可以被看作是十六進制(查看這裏http://www.onlinehexeditor.com/

編輯:https://arduino.stackexchange.com/questions/179/is-there-any-way-to-download-a-sketch-from-an-arduino是原來的職位,給出了這樣的想法,可能已經嘗試查看What's a good C decompiler?中的選項,但迄今爲止這些選項都不起作用。

任何幫助,非常感謝。如果您需要任何其他信息,我會更新該帖子。

+0

可能重複[什麼是一個很好的C反編譯?](http://stackoverflow.com/questions/193896/whats-a-good-c-decompiler) –

+0

剛剛看了Boomerang(建議的解決方案之一)和截至目前還無法讓程序加載文件,將繼續嘗試,但任何進一步的選擇將不勝感激。 –

回答

1

我剪切/粘貼您的數據到一個文件b.txt

刪除第10個字符,因爲他們中的字符偏移的文件或緩衝區,然後轉換爲使用八進制轉儲。

cut -c 10- b.txt | od -h 

這給你以下幾點:

0000000000 30 43 39 34 42 32 30 30 30 43 39 34 44 41 30 30 
0000000020 30 43 39 34 44 41 30 30 30 43 39 34 44 42 30 36 
0000000040 30 43 39 34 30 35 30 37 30 43 39 34 32 46 30 37 
0000000060 30 43 39 34 44 41 30 30 30 43 39 34 44 41 30 30 
0000000100 41 33 0D 0A 30 43 39 34 44 41 30 30 30 43 39 34 
0000000120 44 41 30 30 30 43 39 34 44 41 30 30 30 43 39 34 
* 
0000000200 44 41 30 30 46 30 0D 0A 30 43 39 34 46 31 30 39 
0000000220 30 43 39 34 44 41 30 30 30 43 39 34 36 42 30 42 

and so on 

在16個雙字符列中的值是ASCII字符的十六進制值。例如30(= 48dec)是空格,43是「C」。你應該能夠編寫一個簡短的程序來轉換這些字符。

+0

目前還不清楚如何將其轉換爲ASCII碼可以讓他恢復C代碼,請問您能詳細說明一下嗎? –

相關問題