史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-07-11, 07:59 PM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - pediy之畫貓篇

pediy是高深的東東,要進化成pll621老大類的"超級達人",沒幾年的努力+天賦是不行地,8過似我等超級菜鳥,玩玩幾個api為軟件"加點料"還是可以地,這不,偶對著教程(虎),欺負了一下radasm(畫成了貓,所以就叫"畫貓"篇了^_^.這篇文章沒啥新意,希望對還沒有入門的菜鳥們一點幫助吧.
大家知道radasm在9x下不能輸入俺們的方塊字(會死得很慘),我又沒能力修正其編輯器(看雪上的修正版雖然能輸入但不能編輯),所以偶就想給他增加個功能.呼叫外部編輯器打開它編輯了.偶用到的東東有trw2000,ollydbg,lordpe,exescope,hedit(任意編輯器),我還用到了w32dasm,8過不用也可以.
初探:研究可行性,在radasm的工程視窗有個右鍵表菜單,最適合加上打開的功能了(8錯8錯,用exescope加上個"用其他編輯器打開"呵呵,但現在他啥也幹不了,別急,我們還沒加功能呢),用trw載如radasm,下中斷點bpx createfilea(這個api用於打開文件,文件操作少不了他)先bd*然後g,就出來了主界面,打開一個工程,用ctrl+m調出主界面,be*,然後雙擊一個文件,不出所料,中斷了下來我發現壓入的地址是:440F3E,D 440F3E,果然出來了文件地址,然後G,又打開個別的文件,發現壓入的還是440F3E(興奮呀,這個太簡單了,文件名地址是不變的)加上我們的代碼,呼叫外部編輯器打開就可以了,有三個函數供我們使用:WINEXEC,ShellExecute,CreateProcess,最後一個參數太多,偶頭疼,第一個簡單,不過太呆板,我就選擇了第二個,其參數如下

HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);

所以我們可以改成

PUSH 5 // SW_SHOW
PUSH 0
PUSH 0
PUSH 440F3E //文件地址
PUSH XXXXXX //"OPEN" 的地址
PUSH O
CALL ShellExecuteA
就可以了.
代碼放到哪兒呢?,這麼短的代碼放在文件頭0X300處就8錯了.先別急著寫,我們先找表菜單呼叫的地方:
:bpx sendmessage(注意不是sendmessagea我就在這兒栽了個跟頭)
:BD*
:G
出來了主界面,打開一個工程CTRL+M調出TRW,
:BE*
:G
點擊一個表菜單(HELP項斷了下來,
:PMODLE
幫助交談視窗出來了,點擊確定,回到了TRW我看了看沒有CMP,JNZ等語句,按F12->F8
回到了上一個呼叫處,呵呵,終於找到地方了:
:0042EF62 55 push ebp
:0042EF63 8BEC mov ebp, esp
:0042EF65 81C400FFFFFF add esp, FFFFFF00

* Possible Ref to Menu: MenuID_03E6, Item: "苞?(N) Alt+Ctrl+N"
|
:0042EF6B 3D419C0000 cmp eax, 00009C41 //是否是40001*****改成CALL 400300
:0042EF70 750D jne 0042EF7F //不是就轉到下邊一段
:0042EF72 FF7508 push [ebp+08]
:0042EF75 E88FAAFFFF call 00429A09
:0042EF7A E932040000 jmp 0042F3B1 //轉到返回

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042EF70(C)
|

* Possible Ref to Menu: MenuID_03E6, Item: "S"
|
:0042EF7F 3D429C0000 cmp eax, 00009C42 //從上邊一段跳過來的
:0042EF84 750C jne 0042EF92
:0042EF86 6A00 push 00000000
:0042EF88 E838ECFEFF call 0041DBC5
:0042EF8D E91F040000 jmp 0042F3B1

所以我們在400300處應該寫上

:CMP EAX,9C77 //我定義的表菜單ID是40055,16進制就是9C77
:JNE 0040032A //
;PUSH 5 //SW_SHOW
;PUSH 0
;PUSH 0
;PUSH 440F3E //文件地址
;PUSH 400390 //"OPEN" 的地址
;PUSH O
;CALL ShellExecuteA
:JMP 0042F3B1
0040032A:CMP EAX,9C41
:RET

把上邊的那句3D419C0000 cmp eax, 00009C41
改成:CALL 00400300
然後吧400390改成"OPEN"
一切OK,
打開RADASM然後打開一工程(事先把ASM與INC文件的預定打開方式為EDITPLUS)
先雙擊一個文件(只有雙擊後地址才會出現),然後右鍵"用外部編輯器打開"
果然呼叫EDITPLUS打開了
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1624 篇, 收花: 3187 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 07:44 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2018, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1