隨便用OD或進(jìn)制工具到下面地址修改代碼,主要是為了顯示格式的需要,我們把原來的格式反轉(zhuǎn)過來為 ID + 路徑方式
代碼:
地址:00462598
原始:25 73 20 28 25 30 38 58 29
修改:28 25 30 38 58 29 20 25 73
第二步
關(guān)鍵位置在第一處,第二處不改正常情況沒發(fā)現(xiàn)什么問題,不過感覺第二處有可能會有經(jīng)過的時候,所以一起改掉,如果日后發(fā)現(xiàn)有問題請自己改回,這里的修改主要是為配合第一處修改后的參數(shù)傳遞順序,也改為 ID + 路徑的方式
第一處:
原始
代碼:
0041C034 51 PUSH ECX
0041C035 52 PUSH EDX
十六進(jìn)制代碼:51 52
修改
代碼:
0041C034 52 PUSH EDX
0041C035 51 PUSH ECX
十六進(jìn)制代碼:52 51
第二處:
原始
代碼:
0041C13D . 51 PUSH ECX
0041C13E . 52 PUSH EDX
十六進(jìn)制代碼:51 52
修改
代碼:
0041C13D 52 PUSH EDX
0041C13E 51 PUSH ECX
十六進(jìn)制代碼:52 51
第三步
上面改好后現(xiàn)在就已經(jīng)可以正常顯示了,但當(dāng)打開進(jìn)程的時候就會出錯,簡單分析了一下代碼,程序是通過把得到的 PID + 路徑按原來的路徑加 PID 的方式去處理的,就導(dǎo)致無法打開進(jìn)程,這里用了個取巧的方法,在不影響正常顯示的情況下我們把我們得到的 PID + 路徑字符串在程序處理打開進(jìn)程之前還原回 路徑 + PID 的方式然后在讓程序去繼續(xù)處理。
代碼如下,下面代碼的主要作用其實就是相當(dāng)于把字符串按需要的格式翻轉(zhuǎn),有需要的朋友簡單跟一下就明白了,就不注釋了,很簡單的東西。順便說一下,這段代碼我放到了.DATA 段,好處是這個段的屬性是可讀,可寫,可執(zhí)行,所以后面的數(shù)據(jù)處理也在這個段里處理的,不過原程序中沒用空間,所以我把這個段的 RSIZE 調(diào)整到了0x2000 如果大家修改自己的版本,可以自己處理這個問題。
下面代碼可以利用 OD 的 NonaWrite 1.2 插件直接插入程序。
代碼:
0041C59C - E9 5FFC0500 JMP 0047C200
0x0047c200:
LEA EDI,DWORD PTR SS:[ESP+26C]
pushad
pushfd
MOV EDX,EDI
push 0
CALL DWORD PTR DS:[44D234]
ADD EAX,7CE00
MOV ESI,EDI
MOV EDI,EAX
xor ebx,ebx
mov bl,cl
sub bl,0b
ADD ESI,0B
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
DEC BL
TEST BL,BL
JNZ SHORT 0047C227
MOV BYTE PTR DS:[EDI],20
INC EDI
MOV BL,0A
MOV ESI,EDX
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
DEC BL
TEST BL,BL
JNZ 0047C23b
MOV BL,CL
MOV ESI,EAX
MOV EDI,EDX
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
DEC BL
TEST BL,BL
JNZ 0047C24C
POPFD
POPAD
JMP 0041C5A3