1樓:星魂大家族首領
源**不行,可是你可以用.net reflector 7.6 反編譯 可以看見大量的**,加殼的要脫殼哦
如何將.exe的可執行程式反編譯成為c語言**程式?
2樓:匿名使用者
有個exe2c的軟體可以
不過反編譯出來的**基本可讀性很差,
如果能有那麼好的軟體能把軟體完美的反編譯成源**,那軟體的版權如何保證?
很簡單的一個思考嘛
3樓:匿名使用者
沒有完全可以的,想要**就自己寫
這種軟體多數是假的,要麼就是有毒的
.exe的可執行程式都是已經編譯過了,很難恢復為**
4樓:【【【宛
可執行檔案可以反編譯成彙編原始碼,反編譯成c或其它高階語言源**我暫時還沒發現有。
像破解某軟體就是用反彙編。
求一個c語言程式反編譯軟體
5樓:砍侃看
c語言反編譯,這個應該是真沒有。c語言就是為了速度,如果像其他可反編譯語言那樣弄箇中間語言,那它的速度優勢不就全沒了
6樓:匿名使用者
ida吧,不過要收費。
c語言生成的exe檔案還能不能反編譯成源程式??
7樓:華工大學生
不能.因為同一功能可由不同的語句來實現.不可能由結果推出實現過程.這與一個的人水平沒有必要關係.如:a=a+1與a+=1等價,你說是哪一句呢?
可以反編譯成組合語言程式,專門搞破解用,比如看看註冊碼的生成函式,然後自己寫註冊碼,或者說看看註冊的過程,用軟體引起中斷,然後繞過註冊程式而成功破解.
當然,現在的軟體多數加了殼,需要專門的脫殼工具脫殼後才能反彙編.
8樓:匿名使用者
不能!!!!!!
只能人為的翻譯。
沒有這樣的軟體!!!!!!
如果要是能反編譯,這個世界的程式設計師就全失業了!
9樓:匿名使用者
可以是可以;但那是很高的高手才能做的事。
先反彙編,然後研究分析彙編程式。這裡要求你要懂得編譯原理。
10樓:匿名使用者
反編譯的夢你就別做了 如果都這樣的話 那還有什麼正版軟體? 反編譯後 改改 不就能隨便盜版了?
11樓:陀螺人
算了吧,這你要能做出來你就牛了,世界上的軟體都要寫上你的大名了,呵呵!
12樓:伊·梵
很難反編譯成c原始碼,可以反彙編
c語言的反編譯軟體有嗎
13樓:物理公司的
源**不行,可是你可以用.net reflector 7.6 反編譯 可以看見大量的**,加殼的要脫殼
只能反編譯得到彙編** ~
有靠譜的c語言反編譯工具麼
14樓:匿名使用者
只能反編譯成彙編,反不了c語言,否則軟體的商業機密全無了。
一個 編譯好的c語言.exe程式,如何破解看到源**
15樓:數字愛茜茜
exe檔案是二進位制的了,而且在編譯的過程中編譯器也會進行優化,c語言好像沒有好的反編譯軟體,其他語言的反編譯軟體反編譯出來的也跟實際的**差別很大,幾乎不同,還有就是反彙編,不過這需要你對組合語言比較瞭解。
如何破解c語言編寫的軟體
16樓:匿名使用者
c語言寫的程式很難反編譯、破解的,即使可以,也不可能得到原始碼的。編譯的完成後已版經轉化為機器語權言了,不是完全可逆的過程
反彙編還是可以的。不過靜態反彙編之後看**不用指望能看得懂。
使用除錯工具,比如:softice和windbg想要反編譯得到c**基本上已經是不可能的了。編譯之後,特別是優化之後,早就已經面目全非了,沒有辦法還原回去。
17樓:匿名使用者
用反彙編工具,看彙編**。
一旦軟體完成make,什麼語言寫的都無所謂,最後都是計算機指令。
18樓:匿名使用者
ollydbg 除錯..
誰能幫我把一個hex檔案反編譯為c語言檔案? 100
19樓:兄弟連教育北京總校
檔案有兩種,一種是文字檔案,一種是程式二進位制檔案,不管哪種檔案都可以用十六進位制編碼來顯示,稱為hex檔案。
1、文字hex檔案一般不需要轉成c語言,更多的是程式二進位制檔案,用十六進位制顯示,可以轉換成c語言,一般使用相應的反彙編程式來實現,這方面的工具很多,不同的平臺略有不同。windows平臺一般常用的ollydbg、windbg、ida,linux平臺使用最多的是gdb和linux版的ida。
ollydbg,簡稱od,一般是軟體逆向工程愛好者,最先使用的一個工具,但是因為當下不在更新,所以一般用一般用於學習使用,下圖中左上角的區域即為反彙編區域 ,使用者可以根據彙編指令,分析程式演算法,然後自己編寫**。
在windows平臺,特別是x64平臺,最好用的反彙編工具除還得是windbg。將程式載入windbg後,可以輸入u命令來檢視程式的反彙編**。
拿到這樣的十六進位制**,一般來說,先將其生成二進位制檔案,然後再分析其指令,通過反彙編指令再寫出原始碼。只需要將上面的十六進位制**,儲存到c語言的字串陣列中,寫入到一個exe的檔案空段中,再修改指令將其跳轉到程式入口處即可,這個過程類似於軟體安全領域的殼。
將十六進位制**寫入一個exe檔案後,就可以將exe檔案載入動態偵錯程式進行動態分析或者使用靜態反彙編程式進行靜態分析,兩者的不同在於動態偵錯程式是要執行程式的,而靜態反彙編分析不需要執行程式,所以一般惡意程式,都採用靜態分析。反彙編開頭的一段十六進位制**註釋如下:
4ad75021 5a pop edx ; 函式返回的地址儲存到edx中
4ad75022 64:a1 30000000 mov eax, dword ptr fs:[30] ; 取peb
4ad75028 8b40 0c mov eax, dword ptr [eax+c] ; peb_link
4ad7502b 8b70 1c mov esi, dword ptr [eax+1c] ; 初始化列表到esi
4ad7502e ad lods dword ptr [esi] ; [esi]->eax + 8的位置即kernel32.dll的地址
4ad7502f 8b40 08 mov eax, dword ptr [eax+8] ; eax=kernel32.dll的地址
4ad75032 8bd8 mov ebx, eax ; ebx=kernel32.dll的基址
4ad75034 8b73 3c mov esi, dword ptr [ebx+3c] ; esi = pe頭偏移
4ad75037 8b741e 78 mov esi, dword ptr [esi+ebx+78] ; esi為kernel32.dll匯出表的偏移
4ad7503b 03f3 add esi, ebx ; esi = kernel32.dll匯出表的虛擬地址
4ad7503d 8b7e 20 mov edi, dword ptr [esi+20] ; edi=ent的偏移地址
4ad75040 03fb add edi, ebx ; edi = ent的虛擬地址
4ad75042 8b4e 14 mov ecx, dword ptr [esi+14] ; ecx = kernel32.dll匯出地址的個數
4ad75045 33ed xor ebp, ebp ; ebp=0
4ad75047 56 push esi ; 儲存匯出表虛擬地址
4ad75048 57 push edi ; 儲存ent虛擬地址
4ad75049 51 push ecx ; 儲存計數
4ad7504a 8b3f mov edi, dword ptr [edi]
4ad7504c 03fb add edi, ebx ; 定位ent中的函式名
4ad7504e 8bf2 mov esi, edx ; esi為 要查詢的函式getprocaddress即該call的下一個地址是資料
4ad75050 6a 0e push 0e ; 0xe0是getprocaddress函式的字元個數
4ad75052 59 pop ecx ; 設定迴圈次數為 0xe
4ad75053 f3:a6 repe cmps byte ptr es:[edi], byte ptr [esi] ; ecx!
=0&&zf=1 ecx=ecx-1 cmps判斷 getprocaddress
4ad75055 74 08 je short 4ad7505f ; 如果ent中的函式名為getprocaddress跳走
4ad75057 59 pop ecx ; 不相等則將匯出地址數出棧
4ad75058 5f pop edi ; ent虛擬地址出棧
4ad75059 83c7 04 add edi, 4 ; edi地址遞增4位元組 因為ent的元素大小為4位元組
4ad7505c 45 inc ebp ; ebp用於儲存ent中定位到getprocaddress函式時的計數
4ad7505d ^ e2 e9 loopd short 4ad75048 ; 迴圈查詢
4ad7505f 59 pop ecx
4ad75060 5f pop edi
4ad75061 5e pop esi
4ad75062 8bcd mov ecx, ebp ; 計數儲存於ecx
4ad75064 8b46 24 mov eax, dword ptr [esi+24] ; esi+0x24 ordinal序號表偏移地址
4ad75067 03c3 add eax, ebx ; ordinal序號表的虛擬地址
4ad75069 d1e1 shl ecx, 1 ; ecx邏輯增加2倍 因為ordinal序號是wor型別下面是通過add 來求ordinal所以這裡必須擴大2倍
4ad7506b 03c1 add eax, ecx
4ad7506d 33c9 xor ecx, ecx ; ecx=0
4ad7506f 66:8b08 mov cx, word ptr [eax] ; 儲存取出的ordinal序號
4ad75072 8b46 1c mov eax, dword ptr [esi+1c] ; eax 為kenrnel32.dll的eat的偏移地址
4ad75075 > 03c3 add eax, ebx ; eax = kernel32.dll的eat虛擬地址
4ad75077 c1e1 02 shl ecx, 2 ; 同上,擴大4倍因為eat中元素為dword值
4ad7507a 03c1 add eax, ecx
4ad7507c 8b00 mov eax, dword ptr [eax] ; eax即為getprocaddress函式的地址 相對虛擬地址,eat中儲存的rva
4ad7507e 03c3 add eax, ebx ; 與基址相加求得getprocaddress函式的虛擬地址
4ad75080 8bfa mov edi, edx ; getprocaddress字元到edi
4ad75082 8bf7 mov esi, edi ; esi儲存getprocaddress地址
4ad75084 83c6 0e add esi, 0e ; esi指向getprocaddress字串的末地址
4ad75087 8bd0 mov edx, eax ; edx為getprocaddress的地址
4ad75089 6a 04 push 4
4ad7508b 59 pop ecx ; ecx=4
有經驗的程式設計師, 通過分析即明白上面反彙編**的主要目的就是獲取getprocaddress函式的地址。繼續看反彙編**:
接下來的操作便是通過已獲得地址的getprocaddress()來分別得到getsystemdirectory()、urldownloadtofile()、winexec()及exitprocess()函式的地址,並依次執行。到這裡實際上有經驗的程式設計師,馬上就能寫出c語言**來。 後面的資料區不在分析了,主要是介紹如何操作。
使用c語言,雖然知道了hex檔案的大致流程,但是一般來說,對於彙編指令,更傾向於直接使用a**關鍵字來使用內聯彙編。如下圖所示:
通過這個例項 ,相信應該能理解一個大致的流程啦。
c語言編譯時總是出現errorspawningclee有什麼
到這看看 我在用c語言程式設計時,編譯後總出現error spawning c1.exe的錯誤,看不懂,是什麼意思啊?快快快,謝謝!儲存這個程式時檔案字尾看一下是否是.c或.cpp 用c編的是前者 用c 編的是後者 注意 字尾字母正常情況下一定是小寫字母如果是大寫的話那就把 全選複製貼上到一個新建的...
我想學習軟體程式設計,和反編譯軟體,但我不知道從什麼地方入手,誰可以告訴我,從哪一步開始
先學個c語言吧,買本入門書看看,先知道個程式設計是個什麼樣子的,以後再學習更深的東西 我想貸款買房 但我不知道從哪入手?可在當地多找幾家中介諮詢瞭解情況,平衡得失信譽後,選一家委託辦理。可以去銀行找個職業顧問諮詢 首付 身份證 戶口本 結婚證 收入證明 名下無房產 由於各個銀行需要不同 建議您去櫃員...
目前主流的c語言編譯軟體是什麼,目前主流的C語言編譯軟體是什麼
c語言相比其他很多新興的 複雜的語言,語法還是簡單一些,較好實現的。所以在c語言幾十年的發展中出現了各式各樣的編譯器,還有一些容易被誤解為編譯器的ide。這裡列舉幾個主流的 gcc毫無疑問,gcc幾乎是unix及linux系統中最通用的編譯器套件,幾乎所有的linux發行版都預裝了gcc作為c語言的...