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
<