winamp看過來http://www.onlinedown.net/eovideo.htm 幫你搞定了 (4千字)

看雪資料發表於2002-08-26

原有資訊:
序 號:235933
標 題:pll621超人,你的pe很利害!你可否試一下把一個單執行緒的軟體,修改成多執行緒? (151字)
發信人:winamp
時 間:2002-8-26 0:23:11
閱讀次數:8
詳細資訊:

http://www.onlinedown.net/eovideo.htm
就像word一樣,同時可以開啟多個軟體介面!
這樣轉換就方便與快多了!
這樣才是很利害的pe diy例項!
請超人試一下!

更改方法和原理:
關於怎麼開啟多個程式:
昨天晚上winapm問了我這個問題,今天抽十分鐘空看了一下,具體實施的方法
這個程式是判斷一個標誌位來達到檢測自己是否已經執行了,而不是用findwindow等方法
* Possible Reference to Dialog: DialogID_01EE, CONTROL_ID:00FF, ""
                                  |
:00438665 6AFF                    push FFFFFFFF
:00438667 6821C34D00              push 004DC321
:0043866C 64A100000000            mov eax, dword ptr fs:[00000000]
:00438672 50                      push eax
:00438673 64892500000000          mov dword ptr fs:[00000000], esp
:0043867A 81EC68010000            sub esp, 00000168
:00438680 898DACFEFFFF            mov dword ptr [ebp+FFFFFEAC], ecx       
:00038680    898D ACFEFFFF              MOV [DWORD SS:EBP-154],ECX
:00438686 833D0040520000          cmp dword ptr [00524000], 00000000改成00038686      C605 00405200 00          MOV [BYTE DS:524000],0   

這個就是程式的判斷標誌位的地方,如果為零就證明沒有執行,為1就已經執行,他然後就會GetDesktopWindow 把自己的視窗彈出

:0043868D 0F8EF2000000            jle 00438785                      改成0003868D      E9 F3000000                JMP 00038785             
:00438693 8D8D10FFFFFF            lea ecx, dword ptr [ebp+FFFFFF10]    00038692      90                        NOP                     
                                                                     
* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                  |
:00438699 E846D80900              Call 004D5EE4
:0043869E C745FC00000000          mov [ebp-04], 00000000

* Reference To: USER32.GetDesktopWindow, Ord:00FFh===》這個斷點很有用,因為如果程式要把自己彈出自己視窗就需要這個GetDesktopWindow 的api,下這個斷點很容易知道程式為什麼不能讓自己多次執行



* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                  |
:00438780 E859D70900              Call 004D5EDE

* Referenced by a (U)nconditional or (C)onditional Jump at Address:                                       
|:0043868D(C)                                                                                                 
|                                                                          00038780  E8 59D70900                CALL 000D5EDE                                     
:00438785 C7050040520001000000  mov dword ptr [00524000], 00000001 ====>改成00038785  C705 00405200 00000000  MOV [DWORD DS:524000],0                  
:0043878F C7851CFFFFFF94000000  mov dword ptr [ebp+FFFFFF1C], 00000094      0003878F  C785 1CFFFFFF 94000000    MOV [DWORD SS:EBP-E4],94 ,0                     
:00438799 8D8D1CFFFFFF          lea ecx, dword ptr [ebp+FFFFFF1C]          00038799  8D8D 1CFFFFFF              LEA ECX,[DWORD SS:EBP-E4]                         
:0043879F 51                    push ecx                                    0003879F  51                        PUSH ECX                                         
                                                                                                                                                       
* Reference To: KERNEL32.GetVersionExA, Ord:0175h                                 
                                  |
:004387A0 FF15EC414E00            Call dword ptr [004E41EC]
:004387A6 E8D0460100              call 0044CE7B


關於註冊:判斷在下面
:00420E5D 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00420E60 51                      push ecx
:00420E61 E852AC0200              call 0044BAB8
:00420E66 85C0                    test eax, eax
:00420E68 7426                    je 00420E90===>跳就完蛋

call 0044BAB8到這裡:
:0044BADD E834A50800              Call 004D6016
:0044BAE2 8945A4                  mov dword ptr [ebp-5C], eax

* Possible StringData Ref from Data Obj ->"X5ME"==》這個就是註冊碼,本來就沒有什麼註冊碼的計算,把X5ME填入前面四個,後邊幾個隨便你添
                                  |
:0044BAE5 68A8D35000              push 0050D3A8
:0044BAEA 8B4DA4                  mov ecx, dword ptr [ebp-5C]
:0044BAED 8B11                    mov edx, dword ptr [ecx]
:0044BAEF 52                      push edx

* Reference To: MSVCRT.strcmp, Ord:02B8h===》我就是下斷點strcmp找到的,本來mfc42的機理和vb差不多,字串比較也就這麼幾個函式,假如讓我寫的話我肯定自己寫比較函式,而不會用公用的,太不安全了
                                  |
:0044BAF0 E8ABB60800              Call 004D71A0
:0044BAF5 83C408                  add esp, 00000008
:0044BAF8 F7D8                    neg eax


                                              pll621
<

相關文章