Oracle Forms10g提供了一種將Oracle Forms模塊(從Oracle Forms Builder使用的二進制格式(.FMB))轉換爲文本格式(.FMT)的工具。如何讀取Oracle Forms .FMT文件中的PL/SQL代碼?
例如,如果您創建一個名爲mymodule.fmb與Oracle模塊形成生成器,然後在命令行中調用
frmcmp module=mymodule.fmb script=yes batch=yes logon=no
,甲骨文形式轉換實用程序將創建一個名爲MyModule的文件.fmt來自文件mymodule.fmb。這個文本文件應該是人類可讀的,除了編寫了觸發器和程序單元的PL/SQL代碼之外。
例如,這是一個.FMT文件與編纂的PL/SQL代碼塊片段
DEFINE F50P
BEGIN
PP = 10
PI = 3
PN = 464
PL = 1138
PV = (BLONG)
<<"
00000049 00800000 00440000 00000000 00000031 0000000d 00000002 a0011519
00002420 0000045e 001f0000 00165030 5f32335f 4f43545f 32303038 31365f33
375f3039 00000006 42454749 4e0a0000 0042676f 5f626c6f 636b2820 27504149
53455327 20293b0a 69662066 6f726d5f 73756363 65737320 7468656e 0a096578
65637574 655f7175 6572793b 0a656e64 2069663b 00000005 0a454e44 3b000000
1d574845 4e2d4e45 572d464f 524d2d49 4e535441 4e434520 28466f72 6d290000
你有沒有嘗試過這種類型的文件進行解碼,才能夠提取出PL /表單的SQL代碼?
能夠在許多.FMT文件的PL/SQL代碼中搜索字符串將非常有用,而不是使用Oracle Forms Builder手動打開每個相應的.FMB文件,並搜索字符串在他們每一個。
謝謝!
早在表格4.5(返回時,「開發者2000」是一個時髦的未來派名)的PL/SQL代碼是在FMT文件中的文本 - 所以你可以搜索代碼 - 其實你也可以找到它的FMB文件。也許甲骨文故意混淆它呢? – hamishmcn 2008-10-23 15:54:42
我錯了,字節的字符只是十六進制值(見下面我的職務) – hamishmcn 2008-10-23 19:39:23
如果你正在做的是搜索文本,你應該可以到grep二進制文件就好了。我一直使用python和regex來發現哪些表單會受到給定存儲過程的影響。 – kurosch 2008-10-24 21:14:20