請教各位大神。
我給我們公司寫了一個簡單的ERP軟體。
現在公司領導很擔心軟體被反編譯,造成內部資料外泄。
因為我是把連接陳述句寫在代碼里的,里面包含了服務器的IP地址,用戶名,密碼等等。
但是,我在網上查了一下,要完全反編譯EXE檔案,得到全部代碼非常難。
并且,就算被被反編譯了,對方得到原始碼,也只是公司內部IP,指定資料庫的用戶和密碼。
從外部,用這些資料根本無法得到公司資料庫上的資料。
(我的ERP軟體只能在公司內部局域網用,外網是連不上的。)
這樣看,基本不存在資料外泄的可能。(除非公司的服務器被攻擊,但這不應該是我軟體的問題)
這樣理解,對嗎?
uj5u.com熱心網友回復:
VB6的exe,無法“反編譯”到原始碼級別,只能算是“反匯編”。并且多數針對VB程式“反編譯”的工具軟體,反編譯的代碼也基本沒什么價值。
如果你的IP、用戶名、密碼是明文寫在代碼中的,那倒是可以得到那些資訊的。
uj5u.com熱心網友回復:
連接字串直接寫軟體中,用反編譯工具是可以直接查看到的,不過你只是在內部局域網用就沒什么好擔心的,除非你老板擔心員工盜取公司資料,那你可以把連接字串中的 ip 用戶名 密碼 用變數 拼接,把這些關鍵變數進行加密放入組態檔中,拼接連接字串時進行讀取解密拼接,這樣加一層保護因該夠用了。uj5u.com熱心網友回復:
都不用全部反編譯,動態跟蹤,在你呼叫資料庫連接函式那里加個斷點,然后跑起來。到了斷點看看傳入的引數,就有你的連接串了。不論你怎么加密,連接串是明文的吧。再說IP問題,家賊難防,往往出問題都是內部人使壞,破壞性比外部黑客猛多了。
所以,如果不是三層架構,而是操作員操作的客戶端直連資料庫進行處理,那么你老板的擔心是有道理的。
uj5u.com熱心網友回復:
這個方法好。謝謝。
uj5u.com熱心網友回復:
謝謝,下一步打算按照2樓的方法加一層保護。
uj5u.com熱心網友回復:
你這個好難哦。除非很厲害的高手,一般人沒辦法。
而且,如果真有這個高手,肯定不會在我們公司干了。
我們公司20幾年的歷史,年銷售額5-6個億。連一個像樣的ERP都沒有,你可以想象,我們公司的資料管理落后到什么程度?
我甚至可以在內部公開我的ERP原始碼,估計他們都找不到連接陳述句在哪里,就算他們拿到連接陳述句,我估計都沒幾個人會用。
所以,有時候,我感覺我的擔心都是多余的。
uj5u.com熱心網友回復:
ida pro了解一下,基本上vb的代碼可以反編譯出可讀性很高的c語言的偽代碼。uj5u.com熱心網友回復:
你公司只要有一個人,一個壞人,連接資料庫干壞事就有可能給你老板帶來巨大的損失,這個壞人本身并不需要技術精通。
我回帖里說的是十多年前真實的做法,當時一個醫院,內部人員想取藥品資料賣給醫藥代表,自己搞不定就找到我同事給酬勞看能不能弄出來資料。我同事周末去了一趟沒搞定,把整個終端程式檔案夾拷貝回來分析。后來吃飯的時候跟我聊到這事情,我跟他講了這個思路,然后演示了一下如何跟蹤。第二個周末他過去就搞定了。舉這個例子只是告訴你有想法的人并不一定要他自己會這么做。而且這個手法并不需要多么高手,當年我研究這個的時候才剛畢業沒多久,我那個同事從來沒接觸過的也就看了一遍我的演示就明白怎么回事了。整個程序就跟除錯程式一樣一樣的,并不需要太多匯編語言基礎。
三年前還有一件事,公司搞健身比賽,找一家公司做,這家公司給每人發了一個手環,可以通過手機或PC端應用讀取手環的計步資訊上傳到服務器。PC端的那個程式看了一下有mysql的dll,一看就是是直連資料庫的。用上面完全相同的做法,三分鐘就抓到資料庫連接串。一堆人都在想辦法甩手環作弊的時候,我只要update一下就行。
在2000年左右的時候終端直連資料庫的做法很普遍,現在看來這已經是極其落后和危險的做法了。不要因為你個人的自信,餡一個20年歷史的公司于危險,另外建議你老板花點錢把公司的資訊系統完整的規劃及實作起來。
uj5u.com熱心網友回復:
都不用全部反編譯,動態跟蹤,在你呼叫資料庫連接函式那里加個斷點,然后跑起來。到了斷點看看傳入的引數,就有你的連接串了。不論你怎么加密,連接串是明文的吧。
再說IP問題,家賊難防,往往出問題都是內部人使壞,破壞性比外部黑客猛多了。
所以,如果不是三層架構,而是操作員操作的客戶端直連資料庫進行處理,那么你老板的擔心是有道理的。
你這個好難哦。除非很厲害的高手,一般人沒辦法。
而且,如果真有這個高手,肯定不會在我們公司干了。
我們公司20幾年的歷史,年銷售額5-6個億。連一個像樣的ERP都沒有,你可以想象,我們公司的資料管理落后到什么程度?
我甚至可以在內部公開我的ERP原始碼,估計他們都找不到連接陳述句在哪里,就算他們拿到連接陳述句,我估計都沒幾個人會用。
所以,有時候,我感覺我的擔心都是多余的。
你公司只要有一個人,一個壞人,連接資料庫干壞事就有可能給你老板帶來巨大的損失,這個壞人本身并不需要技術精通。
我回帖里說的是十多年前真實的做法,當時一個醫院,內部人員想取藥品資料賣給醫藥代表,自己搞不定就找到我同事給酬勞看能不能弄出來資料。我同事周末去了一趟沒搞定,把整個終端程式檔案夾拷貝回來分析。后來吃飯的時候跟我聊到這事情,我跟他講了這個思路,然后演示了一下如何跟蹤。第二個周末他過去就搞定了。舉這個例子只是告訴你有想法的人并不一定要他自己會這么做。而且這個手法并不需要多么高手,當年我研究這個的時候才剛畢業沒多久,我那個同事從來沒接觸過的也就看了一遍我的演示就明白怎么回事了。整個程序就跟除錯程式一樣一樣的,并不需要太多匯編語言基礎。
三年前還有一件事,公司搞健身比賽,找一家公司做,這家公司給每人發了一個手環,可以通過手機或PC端應用讀取手環的計步資訊上傳到服務器。PC端的那個程式看了一下有mysql的dll,一看就是是直連資料庫的。用上面完全相同的做法,三分鐘就抓到資料庫連接串。一堆人都在想辦法甩手環作弊的時候,我只要update一下就行。
在2000年左右的時候終端直連資料庫的做法很普遍,現在看來這已經是極其落后和危險的做法了。不要因為你個人的自信,餡一個20年歷史的公司于危險,另外建議你老板花點錢把公司的資訊系統完整的規劃及實作起來。
你這樣說很有道理,我明白了。
果然是行內人
uj5u.com熱心網友回復:
我們公司有專門的IT部門(我不是IT部門的,我是業余的,玩小兒科那種)我們公司IT部門專業人員大概7-8個。
按理說,讓老板花錢買一個專業的ERP軟體,應該問題也不大。但是難在實施。
一個軟體幾十萬(當然,貴的幾百萬)的預算應該也是沒啥問題的,但是公司很多特殊的要求在軟體里無法實施,推行的壓力會很大。
如果找人二次開發,又怕碰到不道德的人,漫天要價,尤其實施到一半時,來搞得你不上不下的(公司以前碰到過一起這樣的事情)。
所以,現在大家對軟體實施,是真的有比較多的擔心。
2016年時,買了管家婆來用,現在發現還是有很多要求達不到。很多公司的業務行為確實不規范,我們也知道不規范,但是各部門不愿意改,就是要那樣操作,而一般市面上的軟體又不支持這樣的不規范的行為,所以導致實施很難進行。
uj5u.com熱心網友回復:
都不用全部反編譯,動態跟蹤,在你呼叫資料庫連接函式那里加個斷點,然后跑起來。到了斷點看看傳入的引數,就有你的連接串了。不論你怎么加密,連接串是明文的吧。
再說IP問題,家賊難防,往往出問題都是內部人使壞,破壞性比外部黑客猛多了。
所以,如果不是三層架構,而是操作員操作的客戶端直連資料庫進行處理,那么你老板的擔心是有道理的。
請教您一個問題。三層架構我去了解了一下,發現對于我這種菜鳥來說,要實作幾乎不可能。
有沒有其他相對比較簡單的安全措施來保護我們的資料?
uj5u.com熱心網友回復:
. . . . . . .
有沒有其他相對比較簡單的安全措施來保護我們的資料?
在你的“服務器”上運行一個服務程式,所有的資料資訊,必須通過這個服務程式獲取。
這個“服務程式”不要被泄露出去(程式原始碼更是不要泄露)。
所有“資料”的增、刪、查、改等操作,都由“客戶端”連接服務程式,
通過向服務程式發送“指令代碼”(代碼表由你自己決定),由服務程式完成實際操作、回傳結果。
你的“客戶端”發送的需要連接的資料庫、表名、欄位名等“文本”,
可以“加密”發送(指某種“可逆”加密演算法),當然同樣可以用“指令代碼”表示。
uj5u.com熱心網友回復:
. . . . . . .
有沒有其他相對比較簡單的安全措施來保護我們的資料?
在你的“服務器”上運行一個服務程式,所有的資料資訊,必須通過這個服務程式獲取。
這個“服務程式”不要被泄露出去(程式原始碼更是不要泄露)。
所有“資料”的增、刪、查、改等操作,都由“客戶端”連接服務程式,
通過向服務程式發送“指令代碼”(代碼表由你自己決定),由服務程式完成實際操作、回傳結果。
你的“客戶端”發送的需要連接的資料庫、表名、欄位名等“文本”,
可以“加密”發送(指某種“可逆”加密演算法),當然同樣可以用“指令代碼”表示。
謝謝。
uj5u.com熱心網友回復:
. . . . . . .
有沒有其他相對比較簡單的安全措施來保護我們的資料?
在你的“服務器”上運行一個服務程式,所有的資料資訊,必須通過這個服務程式獲取。
這個“服務程式”不要被泄露出去(程式原始碼更是不要泄露)。
所有“資料”的增、刪、查、改等操作,都由“客戶端”連接服務程式,
通過向服務程式發送“指令代碼”(代碼表由你自己決定),由服務程式完成實際操作、回傳結果。
你的“客戶端”發送的需要連接的資料庫、表名、欄位名等“文本”,
可以“加密”發送(指某種“可逆”加密演算法),當然同樣可以用“指令代碼”表示。
謝謝。

這不就是實作中間的業務邏輯層
uj5u.com熱心網友回復:

這不就是實作中間的業務邏輯層
-----------------------------------------------------------------
我的想法大概是如此(不是嚴格意義上的三層架構)
我在服務器上放置一個程式,我的客戶端運行是,會順便運行這個服務器上的程式。
服務器上的程式只有一個功能,就是根據加密函式產生一個連接資料庫的陳述句給客戶端用。
然后客戶端根據這個連接陳述句跟資料庫發送接受資料。
這個應該不是嚴格意義上的三層價格,但是也可以對資料庫產生一定的保護。
現在問題是,我在運行服務器上的加密程式后,如果得到那個連接陳述句。
也就是說,如果在一個運行的EXE程式中,得到另外一個運行的EXE程式的某個函式的值。
能不能指點一下?
uj5u.com熱心網友回復:
我的想法大概是如此(不是嚴格意義上的三層架構)我在服務器上放置一個程式,我的客戶端運行時,會順便運行這個服務器上的程式。
服務器上的程式只有一個功能,就是根據加密函式產生一個連接資料庫的陳述句給客戶端用。
然后客戶端根據這個連接陳述句操作資料庫。
這個應該不是嚴格意義上的三層價格,但是也可以對資料庫產生一定的保護。
現在問題是,我在運行服務器上的加密程式后,如何得到那個連接陳述句。
也就是說,如果在一個運行的EXE程式中,得到另外一個運行的EXE程式的某個函式的值。
能不能指點一下?
--------------------------------錯別字太多,更正一下。
uj5u.com熱心網友回復:
我的想法大概是如此(不是嚴格意義上的三層架構)
我在服務器上放置一個程式,我的客戶端運行時,會順便運行這個服務器上的程式。
服務器上的程式只有一個功能,就是根據加密函式產生一個連接資料庫的陳述句給客戶端用。
然后客戶端根據這個連接陳述句操作資料庫。
這個應該不是嚴格意義上的三層價格,但是也可以對資料庫產生一定的保護。
現在問題是,我在運行服務器上的加密程式后,如何得到那個連接陳述句。
也就是說,如果在一個運行的EXE程式中,得到另外一個運行的EXE程式的某個函式的值。
能不能指點一下?
--------------------------------錯別字太多,更正一下。
vb的isapi程式撰寫服務器程式,inet控制元件撰寫客戶端和服務器通訊的程式,可以做到。
uj5u.com熱心網友回復:
最簡單的是將明文用戶名與密碼加密 使用時解密 加密解密將程式寫在DLL里面VB6是能被反編譯 但是除了一些使用的框架控制元件與小部分的明文看得到,大半都是看不到的, 如果真能被反編譯你還學VB6干啥?? 等著反編譯別人寫好的代碼就行,何必那么辛苦自己學習編程?
uj5u.com熱心網友回復:
你們公司的領導一定是個傻瓜,你就把他當傻瓜來對待,就可以以。uj5u.com熱心網友回復:
聽說反編譯后,面目全非,還會有岐義。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/31849.html
標籤:網絡編程
