盛大传奇私服

 手機版 | 登陸 | 注冊 | 留言 | 設首頁 | 加收藏
當前位置: 網站首頁 > 傳奇故事 > 文章 當前位置: 傳奇故事 > 文章

新開傳奇SF登錄器的故事

時間:2020-01-07    點擊: 次    來源:網絡    作者:佚名 - 小 + 大

  閑著沒事,最近在用寫易語言的圖像操作類,寫到PrintWindow函數進行后臺截圖的時候,正常的win7 32位程序都能完成,無意中冒出個想法,想試試能不能后臺截游戲的圖像,剛好最近在玩傳奇SF準備拿來試手,于是我跟這款號稱80復古合擊的故事來了!
第一次PrintWindow后臺截圖成功,然后。。就沒有然后了,自從跟成功一次之后,在也沒有正常截圖出來過,全是白板;
    于是習慣性的拿出終極武器PCHunter掃一掃,首先排除登錄器加載了驅動,(別問我為什么這么肯定,PCHunter與360都沒攔截到驅動加載),然后騷進程鉤子,乖乖這一掃不得了了,請看圖:


盛大传奇私服 PCHunter提示模塊文件被替換,目測是進程加載后把自身PE信息抹去了,到這里我先試了從磁盤文件中讀取PE信息,然后寫入登錄器進程中,修復PE問題,以為這樣就可以萬事大吉抱得美人了,沒想到竟然還是出現這種報錯;

    下一步:

  PEID掃一掃,我艸,竟然加了UPX的殼,怎么辦?   干他!ESP定律一路脫到底,這下終于可以報的美人歸了吧。重復之前的工作,從文件中讀取PE信息進去,PCHunter在掃一掃,還是這種問題,要逆天了這是。 這就到了掏終極武器OD和IDA的時候到了.

    下一步:

    正常的OD附加,一路運行下來OD里的進程退出了,但是登錄器已經成功運行。why?   這是哪個娃子寫的反調試?  任務管理器打開看看,尼瑪,竟然2個登錄器進程,搞了半天登錄器啟動之后,又加載了自身exe文件為新進程,然后自己退出,所以OD看著調試進程已經退出,但是登錄器界面成功正常顯示,再次掏出PCHunter掃一掃新進程,得了,要翻天,新老進程一模一樣的,全部都一樣,哎,老老實實的去逆第一個進程吧.

盛大传奇私服     OD已啟動exe方式加載進程,中斷到入口點(殼已脫,OEP正確),下個CreateProcessA的斷點,進程成功斷下,一頓操作猛如虎之后,就有了下面的分析,附上這半天時間分析的代碼 .

盛大传奇私服 00401368                        /$  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

0040136E                        |.  68 BC094100   PUSH 80復古合.004109BC                                                ; /pModule = "Kernel32.dll"

00401373                        |.  FF15 18C04000 CALL DWORD PTR DS:[<&KERNEL32.GetModuleHandleA>]                   ; \GetModuleHandleA

盛大传奇私服 00401379                        |.  68 CC094100   PUSH 80復古合.004109CC                                                ; /ProcNameOrOrdinal = "VirtualAllocEx"

0040137E                        |.  50            PUSH EAX                                                           ; |hModule

盛大传奇私服 0040137F                        |.  FF15 2CC04000 CALL DWORD PTR DS:[<&KERNEL32.GetProcAddress>]                     ; \GetProcAddress

盛大传奇私服 00401385                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

0040138B                        |.  8BC8          MOV ECX,EAX                                                        ; EAX= kernel32.VirtualAllocEx

0040138D                        |.  33C0          XOR EAX,EAX

盛大传奇私服 0040138F                        |.  890D 5CBFE400 MOV DWORD PTR DS:[0xE4BF5C],ECX                                     [0xE4BF5C]=VirtualAllocEx

00401395                        |.  85C9          TEST ECX,ECX

00401397                        |.  0F95C0        SETNE AL                                                                     取得ZF值后, 取反, 再放到AL中.

0040139A                        \.  C3            RETN        返回到下面繼續執行                                                                 eax=1



0040156F                        |.  85C0          TEST EAX,EAX                               GetProcAddress(VirtualAllocEx)是否=0,不等于0則繼續執行,VirtualAllocEx=0則跳轉        

00401571                        |.  74 4E         JE SHORT 80復古合.004015C1

盛大传奇私服 00401573                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

00401579                        |.  BB 00010000   MOV EBX,0x100

盛大传奇私服 0040157E                        |.  53            PUSH EBX

盛大传奇私服 0040157F                        |.  E8 D81D0000   CALL 80復古合.0040335C       //沒什么用申請堆內存HeapAlloc(),申請的內存可能為是GetModuleFileNameA的參數buffer

00401584                        |.  53            PUSH EBX

00401585                        |.  8BF8          MOV EDI,EAX

盛大传奇私服 00401587                        |.  33DB          XOR EBX,EBX

00401589                        |.  53            PUSH EBX

盛大传奇私服 0040158A                        |.  57            PUSH EDI

0040158B                        |.  89BD 04FDFFFF MOV [LOCAL.191],EDI

盛大传奇私服 00401591                        |.  E8 4A160000   CALL 80復古合.00402BE0     //里面一堆跳轉都沒實現

00401596                        |.  83C4 10       ADD ESP,0x10

00401599                        |.  68 00010000   PUSH 0x100                                                         ; /BufSize = 100 (256.)

盛大传奇私服 0040159E                        |.  57            PUSH EDI                                                           ; |PathBuffer 

0040159F                        |.  53            PUSH EBX                                                           ; |hModule      

004015A0                        |.  FF15 00C04000 CALL DWORD PTR DS:[<&KERNEL32.GetModuleFileNameA>]                 ; \GetModuleFileNameA     獲取當前進程的絕對路徑

004015A6                        |.  4F            DEC EDI

004015A7                        |>  8A47 01       /MOV AL,BYTE PTR DS:[EDI+0x1]                                       AL="C"    esi指向"PE"

004015AA                        |.  47            |INC EDI

盛大传奇私服 004015AB                        |.  84C0          |TEST AL,AL                                                         AL="C"  從文件路徑取出來的,表示C盤  這里循環讀取1字節,直到讀完整個路徑

004015AD                        |.^ 75 F8         \JNZ SHORT 80復古合.004015A7

004015AF                        |.  A0 B8094100   MOV AL,BYTE PTR DS:[0x4109B8]

004015B4                        |.  8807          MOV BYTE PTR DS:[EDI],AL

004015B6                        |.  83CF FF       OR EDI,0xFFFFFFFF

004015B9                        |.  8B85 04FDFFFF MOV EAX,[LOCAL.191]                                                      eax=進程路徑指針

盛大传奇私服 004015BF                        |.  EB 0A         JMP SHORT 80復古合.004015CB                                             


004015C1                        |>  33DB          XOR EBX,EBX                                                            GetProcAddress(VirtualAllocEx)=0則跳轉到此                                                      

004015C3                        |.  8BC3          MOV EAX,EBX

盛大传奇私服 004015C5                        |.  8985 04FDFFFF MOV [LOCAL.191],EAX                                                     [LOCAL.191]進程路徑=“”



004015CB                        |>  85C0          TEST EAX,EAX                                                           GetProcAddress(VirtualAllocEx)!0則執行到此   

004015CD                        |.  0F84 6C030000 JE 80復古合.0040193F                                                  如果GetProcAddress(VirtualAllocEx)!=0則繼續執行,并創建新進程,否則跳轉0040193F(好像為退出子程序)  

004015D3                        |.  FF75 F4       PUSH [LOCAL.3]                                                     ; /Arg6

004015D6                        |.  8D4D F4       LEA ECX,[LOCAL.3]                                                  ; |

004015D9                        |.  51            PUSH ECX                                                           ; |Arg5

004015DA                        |.  8D4D DC       LEA ECX,[LOCAL.9]                                                  ; |

盛大传奇私服 004015DD                        |.  51            PUSH ECX                                                           ; |Arg4

004015DE                        |.  FFB5 08FDFFFF PUSH [LOCAL.190]                                                   ; |Arg3

盛大传奇私服 004015E4                        |.  8D8D 08FDFFFF LEA ECX,[LOCAL.190]                                                ; |

004015EA                        |.  51            PUSH ECX                                                           ; |Arg2

盛大传奇私服 004015EB                        |.  8D4D E8       LEA ECX,[LOCAL.6]                                                  ; |

004015EE                        |.  51            PUSH ECX                                                           ; |Arg1

004015EF                        |.  8D95 10FDFFFF LEA EDX,[LOCAL.188]                                                ; |

004015F5                        |.  8BC8          MOV ECX,EAX                                                        ; |

004015F7                        |.  E8 EFFDFFFF   CALL 80復古合.004013EB                                                ; \里面創建進程!!!并讀內存,然后查詢了進程的內存屬性

004015FC                        |.  8B7D E8       MOV EDI,[LOCAL.6]

盛大传奇私服 004015FF                        |.  85C0          TEST EAX,EAX

盛大传奇私服 00401601                        |.  0F84 21030000 JE 80復古合.00401928                             進程創建失敗,則跳轉到00401928 函數尾部                                 

00401607                        |.  8B4D E0       MOV ECX,[LOCAL.8]

盛大传奇私服 0040160A                        |.  8B85 08FDFFFF MOV EAX,[LOCAL.190]

盛大传奇私服 00401610                        |.  895D E0       MOV [LOCAL.8],EBX

00401613                        |.  8901          MOV DWORD PTR DS:[ECX],EAX

00401615                        |.  8B45 DC       MOV EAX,[LOCAL.9]

00401618                        |.  3946 34       CMP DWORD PTR DS:[ESI+0x34],EAX                    

0040161B                        |.  75 2A         JNZ SHORT 80復古合.00401647                           '這里比較基地址是否相同 0x400000,不相同則跳轉到 00401647                    

0040161D                        |.  8B8D 0CFDFFFF MOV ECX,[LOCAL.189]

盛大传奇私服 00401623                        |.  394D F4       CMP [LOCAL.3],ECX                                     

00401626                        |.  72 1F         JB SHORT 80復古合.00401647                              '這里比較模塊大小是否相同?如果相同則跳轉

盛大传奇私服 00401628                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

0040162E                        |.  8D4D E8       LEA ECX,[LOCAL.6]

盛大传奇私服 00401631                        |.  51            PUSH ECX                                                           ; /pOldProtect

00401632                        |.  6A 40         PUSH 0x40                                                          ; |NewProtect = PAGE_EXECUTE_READWRITE

盛大传奇私服 00401634                        |.  FF75 F4       PUSH [LOCAL.3]                                                     ; |Size

00401637                        |.  8945 E0       MOV [LOCAL.8],EAX                                                  ; |

0040163A                        |.  50            PUSH EAX                                                           ; |Address

0040163B                        |.  57            PUSH EDI                                                           ; |hProcess

盛大传奇私服 0040163C                        |.  FF15 24C04000 CALL DWORD PTR DS:[<&KERNEL32.VirtualProtectEx>]                   ; \VirtualProtectEx

盛大传奇私服 00401642                        |.  E9 B7000000   JMP 80復古合.004016FE


00401647                        |>  E8 1CFDFFFF   CALL 80復古合.00401368      基地址不相同 0x400000   則跳轉此處

0040164C                        |.  85C0          TEST EAX,EAX

盛大传奇私服 0040164E                        |.  0F84 AA000000 JE 80復古合.004016FE

盛大传奇私服 00401654                        |.  8B55 DC       MOV EDX,[LOCAL.9]

盛大传奇私服 00401657                        |.  8BCF          MOV ECX,EDI

盛大传奇私服 00401659                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

0040165F                        |.  E8 37FDFFFF   CALL 80復古合.0040139B

00401664                        |.  85C0          TEST EAX,EAX

盛大传奇私服 00401666                        |.  74 1C         JE SHORT 80復古合.00401684

盛大传奇私服 00401668                        |.  6A 40         PUSH 0x40

盛大传奇私服 0040166A                        |.  68 00300000   PUSH 0x3000

盛大传奇私服 0040166F                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]

00401675                        |.  FF76 34       PUSH DWORD PTR DS:[ESI+0x34]

00401678                        |.  57            PUSH EDI

00401679                        |.  FF15 5CBFE400 CALL DWORD PTR DS:[0xE4BF5C]                                       ;  kernel32.VirtualAllocEx

0040167F                        |.  8945 E0       MOV [LOCAL.8],EAX

盛大传奇私服 00401682                        |.  EB 03         JMP SHORT 80復古合.00401687

盛大传奇私服 00401684                        |>  8B45 E0       MOV EAX,[LOCAL.8]

00401687                        |>  85C0          TEST EAX,EAX

00401689                        |.  75 7D         JNZ SHORT 80復古合.00401708

盛大传奇私服 0040168B                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

00401691                        |.  399E A0000000 CMP DWORD PTR DS:[ESI+0xA0],EBX

00401697                        |.  0F84 59020000 JE 80復古合.004018F6

盛大传奇私服 0040169D                        |.  399E A4000000 CMP DWORD PTR DS:[ESI+0xA4],EBX

004016A3                        |.  0F84 4D020000 JE 80復古合.004018F6

盛大传奇私服 004016A9                        |.  6A 40         PUSH 0x40

004016AB                        |.  68 00300000   PUSH 0x3000

盛大传奇私服 004016B0                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]

盛大传奇私服 004016B6                        |.  53            PUSH EBX

004016B7                        |.  57            PUSH EDI

盛大传奇私服 004016B8                        |.  FF15 5CBFE400 CALL DWORD PTR DS:[0xE4BF5C]                                       ;  kernel32.VirtualAllocEx

盛大传奇私服 004016BE                        |.  8BC8          MOV ECX,EAX

004016C0                        |.  894D E0       MOV [LOCAL.8],ECX

004016C3                        |.  85C9          TEST ECX,ECX

盛大传奇私服 004016C5                        |.  0F84 2B020000 JE 80復古合.004018F6

004016CB                        |.  8B96 A0000000 MOV EDX,DWORD PTR DS:[ESI+0xA0]

004016D1                        |.  0355 E4       ADD EDX,[LOCAL.7]

004016D4                        |.  8305 58BFE400>ADD DWORD PTR DS:[0xE4BF58],0x2

004016DB                        |.  8B4A 04       MOV ECX,DWORD PTR DS:[EDX+0x4]

004016DE                        |.  030A          ADD ECX,DWORD PTR DS:[EDX]

盛大传奇私服 004016E0                        |.  74 1C         JE SHORT 80復古合.004016FE

004016E2                        |>  8B42 04       /MOV EAX,DWORD PTR DS:[EDX+0x4]

004016E5                        |.  8D4A 08       |LEA ECX,DWORD PTR DS:[EDX+0x8]

盛大传奇私服 004016E8                        |.  83E8 08       |SUB EAX,0x8

004016EB                        |.  D1E8          |SHR EAX,1

004016ED                        |.  83F8 01       |CMP EAX,0x1

004016F0                        |.  72 03         |JB SHORT 80復古合.004016F5

盛大传奇私服 004016F2                        |.  8D0C41        |LEA ECX,DWORD PTR DS:[ECX+EAX*2]

盛大传奇私服 004016F5                        |>  8B41 04       |MOV EAX,DWORD PTR DS:[ECX+0x4]

004016F8                        |.  8BD1          |MOV EDX,ECX

004016FA                        |.  0301          |ADD EAX,DWORD PTR DS:[ECX]

004016FC                        |.^ 75 E4         \JNZ SHORT 80復古合.004016E2


004016FE                        |>  837D E0 00    CMP [LOCAL.8],0x0   正常流程jmp到此

盛大传奇私服 00401702                        |.  0F84 EE010000 JE 80復古合.004018F6

盛大传奇私服 00401708                        |>  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

0040170E                        |.  8D45 E8       LEA EAX,[LOCAL.6]

00401711                        |.  50            PUSH EAX                                                           ; /pBytesWritten

00401712                        |.  6A 04         PUSH 0x4                                                           ; |BytesToWrite = 0x4          第一次寫大小 4

盛大传奇私服 00401714                        |.  8D45 E0       LEA EAX,[LOCAL.8]                                                  ; |

00401717                        |.  50            PUSH EAX                                                           ; |Buffer                   buffer地址里的值=0x400000

盛大传奇私服 00401718                        |.  8B85 B4FDFFFF MOV EAX,[LOCAL.147]                                                ; |

盛大传奇私服 0040171E                        |.  83C0 08       ADD EAX,0x8                                                        ; |

00401721                        |.  50            PUSH EAX                                                           ; |Address                     寫入地址=7efde008  里面的值=0x400000

00401722                        |.  57            PUSH EDI                                                           ; |hProcess                        進程句柄=0x30  判斷下本地進程還是目標進程

00401723                        |.  FF15 04C04000 CALL DWORD PTR DS:[<&KERNEL32.WriteProcessMemory>]                 ; \WriteProcessMemory               此次似乎沒有用?  都=0x40000

00401729                        |.  8B45 E0       MOV EAX,[LOCAL.8]

0040172C                        |.  8D4D E8       LEA ECX,[LOCAL.6]

盛大传奇私服 0040172F                        |.  51            PUSH ECX                                                           ; /pBytesWritten

盛大传奇私服 00401730                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]                                                   ; |BytesToWrite               0x5823000

00401736                        |.  8946 34       MOV DWORD PTR DS:[ESI+0x34],EAX                                    ; |

00401739                        |.  FF75 E4       PUSH [LOCAL.7]                                                     ; |Buffer                    buffer地址10b0000里的值="MZP"              

0040173C                        |.  50            PUSH EAX                                                           ; |Address                      0x400000

盛大传奇私服 0040173D                        |.  57            PUSH EDI                                                           ; |hProcess                          進程句柄=0x30 

0040173E                        |.  FF15 04C04000 CALL DWORD PTR DS:[<&KERNEL32.WriteProcessMemory>]                 ; \WriteProcessMemory

00401744                        |.  85C0          TEST EAX,EAX

00401746                        |.  0F84 7A010000 JE 80復古合.004018C6                                            寫入失敗則跳轉004018C6

0040174C                        |.  8B4D E0       MOV ECX,[LOCAL.8]

盛大传奇私服 0040174F                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

盛大传奇私服 00401755                        |.  8B46 28       MOV EAX,DWORD PTR DS:[ESI+0x28]

盛大传奇私服 00401758                        |.  C785 10FDFFFF>MOV [LOCAL.188],0x10007

00401762                        |.  3B4D DC       CMP ECX,[LOCAL.9]

00401765                        |.  75 05         JNZ SHORT 80復古合.0040176C

盛大传奇私服 00401767                        |.  0346 34       ADD EAX,DWORD PTR DS:[ESI+0x34]

0040176A                        |.  EB 02         JMP SHORT 80復古合.0040176E

0040176C                        |>  03C1          ADD EAX,ECX

盛大传奇私服 0040176E                        |>  8985 C0FDFFFF MOV [LOCAL.144],EAX

盛大传奇私服 00401774                        |.  B8 3C004000   MOV EAX,80復古合.0040003C

盛大传奇私服 00401779                        |.  8B00          MOV EAX,DWORD PTR DS:[EAX]

盛大传奇私服 0040177B                        |.  05 00004000   ADD EAX,80復古合.00400000

00401780                        |.  83C0 28       ADD EAX,0x28

00401783                        |.  8B00          MOV EAX,DWORD PTR DS:[EAX]

00401785                        |.  05 00004000   ADD EAX,80復古合.00400000

0040178A                        |.  8985 0CFDFFFF MOV [LOCAL.189],EAX

00401790                        |.  8305 58BFE400>ADD DWORD PTR DS:[0xE4BF58],0x5

00401797                        |.  8D45 E4       LEA EAX,[LOCAL.7]

盛大传奇私服 0040179A                        |.  50            PUSH EAX                                                           ; /pBytesRead

盛大传奇私服 0040179B                        |.  6A 05         PUSH 0x5                                                           ; |BytesToRead = 0x5     要讀取的大小 0x5

0040179D                        |.  8D45 EC       LEA EAX,[LOCAL.5]                                                  ; |

盛大传奇私服 004017A0                        |.  885D EC       MOV BYTE PTR SS:[EBP-0x14],BL                                      ; |

004017A3                        |.  50            PUSH EAX                                                           ; |Buffer         保持地址

盛大传奇私服 004017A4                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]                                                   ; |pBaseAddress     目標地址 0x401b91

004017AA                        |.  895D ED       MOV DWORD PTR SS:[EBP-0x13],EBX                                    ; |

004017AD                        |.  57            PUSH EDI                                                           ; |hProcess         0x30

盛大传奇私服 004017AE                        |.  C745 F4 E9000>MOV [LOCAL.3],0xE9                                                 ; |

004017B5                        |.  885D F8       MOV BYTE PTR SS:[EBP-0x8],BL                                       ; |

004017B8                        |.  FF15 30C04000 CALL DWORD PTR DS:[<&KERNEL32.ReadProcessMemory>]                  ; \ReadProcessMemory

盛大传奇私服 004017BE                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

盛大传奇私服 004017C4                        |.  6A 40         PUSH 0x40

盛大传奇私服 004017C6                        |.  68 00100000   PUSH 0x1000

004017CB                        |.  6A 05         PUSH 0x5

004017CD                        |.  53            PUSH EBX

004017CE                        |.  57            PUSH EDI

004017CF                        |.  FF15 5CBFE400 CALL DWORD PTR DS:[0xE4BF5C]                                       ;  kernel32.VirtualAllocEx

盛大传奇私服 004017D5                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

004017DB                        |.  8BF0          MOV ESI,EAX

004017DD                        |.  8D45 E8       LEA EAX,[LOCAL.6]

004017E0                        |.  50            PUSH EAX                                                           ; /pBytesWritten

盛大传奇私服 004017E1                        |.  6A 05         PUSH 0x5                                                           ; |BytesToWrite =  寫入大小= 0x5

004017E3                        |.  8D45 EC       LEA EAX,[LOCAL.5]                                                  ; |

004017E6                        |.  50            PUSH EAX                                                           ; |Buffer      buffer地址18feec里的值=0x8dc9bc0f   

004017E7                        |.  56            PUSH ESI                                                           ; |Address        0x1c0000

004017E8                        |.  57            PUSH EDI                                                           ; |hProcess       0x30

004017E9                        |.  FF15 04C04000 CALL DWORD PTR DS:[<&KERNEL32.WriteProcessMemory>]                 ; \WriteProcessMemory

盛大传奇私服 004017EF                        |.  8B85 0CFDFFFF MOV EAX,[LOCAL.189]

盛大传奇私服 004017F5                        |.  8305 58BFE400>ADD DWORD PTR DS:[0xE4BF58],0x4

盛大传奇私服 004017FC                        |.  6A 40         PUSH 0x40

004017FE                        |.  68 00100000   PUSH 0x1000

00401803                        |.  68 CE8D0300   PUSH 0x38DCE

00401808                        |.  53            PUSH EBX

00401809                        |.  A3 92274100   MOV DWORD PTR DS:[0x412792],EAX

盛大传奇私服 0040180E                        |.  8B85 C0FDFFFF MOV EAX,[LOCAL.144]

盛大传奇私服 00401814                        |.  57            PUSH EDI

盛大传奇私服 00401815                        |.  8935 8D274100 MOV DWORD PTR DS:[0x41278D],ESI

0040181B                        |.  A3 A0274100   MOV DWORD PTR DS:[0x4127A0],EAX

00401820                        |.  FF15 5CBFE400 CALL DWORD PTR DS:[0xE4BF5C]                                       ;  kernel32.VirtualAllocEx

00401826                        |.  8305 58BFE400>ADD DWORD PTR DS:[0xE4BF58],0x3

盛大传奇私服 0040182D                        |.  8BF0          MOV ESI,EAX

0040182F                        |.  8B1D 04C04000 MOV EBX,DWORD PTR DS:[<&KERNEL32.WriteProcessMemory>]              ;  kernel32.WriteProcessMemory

00401835                        |.  8D45 E8       LEA EAX,[LOCAL.6]

00401838                        |.  50            PUSH EAX                                                           ; pBytesWritten

盛大传奇私服 00401839                        |.  68 CE8D0300   PUSH 0x38DCE                                                       ; |BytesToWrite        寫入大小= 38DCE 

盛大传奇私服 0040183E                        |.  68 80274100   PUSH 80復古合.00412780                                             ; |Buffer =            buffer=00412780

盛大传奇私服 00401843                        |.  56            PUSH ESI                                                           ; |Address          寫入的地址= 1d0000里的值"L<"  這個地址為上面VirtualAllocEx申請的遠程內存

盛大传奇私服 00401844                        |.  8D8E CD0D0000 LEA ECX,DWORD PTR DS:[ESI+0xDCD]                                   ; |

0040184A                        |.  C705 88274100>MOV DWORD PTR DS:[0x412788],0x19                                   ; |

盛大传奇私服 00401854                        |.  57            PUSH EDI                                                           ; |hProcess                30

00401855                        |.  890D 83274100 MOV DWORD PTR DS:[0x412783],ECX                                    ; |

0040185B                        |.  FFD3          CALL EBX                                                           ; \WriteProcessMemory

0040185D                        |.  2BB5 0CFDFFFF SUB ESI,[LOCAL.189]

00401863                        |.  8D45 E8       LEA EAX,[LOCAL.6]

盛大传奇私服 00401866                        |.  8305 58BFE400>ADD DWORD PTR DS:[0xE4BF58],0x3

盛大传奇私服 0040186D                        |.  83EE 05       SUB ESI,0x5

盛大传奇私服 00401870                        |.  50            PUSH EAX                                                           ; /pOldProtect

00401871                        |.  6A 40         PUSH 0x40                                                          ; |NewProtect = PAGE_EXECUTE_READWRITE

盛大传奇私服 00401873                        |.  6A 05         PUSH 0x5                                                           ; |Size = 0x5

00401875                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]                                                   ; |Address

盛大传奇私服 0040187B                        |.  8975 F5       MOV DWORD PTR SS:[EBP-0xB],ESI                                     ; |

盛大传奇私服 0040187E                        |.  57            PUSH EDI                                                           ; |hProcess

盛大传奇私服 0040187F                        |.  FF15 24C04000 CALL DWORD PTR DS:[<&KERNEL32.VirtualProtectEx>]                   ; \VirtualProtectEx

00401885                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

盛大传奇私服 0040188B                        |.  8D45 E8       LEA EAX,[LOCAL.6]

0040188E                        |.  50            PUSH EAX                                                           ; /pBytesWritten

盛大传奇私服 0040188F                        |.  6A 05         PUSH 0x5                                                           ; |BytesToWrite =  寫入大小= 0x5

00401891                        |.  8D45 F4       LEA EAX,[LOCAL.3]                                                  ; |

00401894                        |.  50            PUSH EAX                                                           ; |Buffer         buffer里的值有e9,這里是hook入口點

00401895                        |.  FFB5 0CFDFFFF PUSH [LOCAL.189]                                                   ; |Address         寫入的地址=0x401b91   '模塊入口點!!!!!!!!!!

0040189B                        |.  57            PUSH EDI                                                           ; |hProcess

0040189C                        |.  FFD3          CALL EBX                                                           ; \WriteProcessMemory

0040189E                        |.  8B9D 08FDFFFF MOV EBX,[LOCAL.190]

004018A4                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

盛大传奇私服 004018AA                        |.  53            PUSH EBX                                                           ; /hThread

盛大传奇私服 004018AB                        |.  FF15 14C04000 CALL DWORD PTR DS:[<&KERNEL32.ResumeThread>]                       ; \ResumeThread

004018B1                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

004018B7                        |.  53            PUSH EBX                                                           ; /hObject

盛大传奇私服 004018B8                        |.  FF15 20C04000 CALL DWORD PTR DS:[<&KERNEL32.CloseHandle>]                        ; \CloseHandle

盛大传奇私服 004018BE                        |.  A1 58BFE400   MOV EAX,DWORD PTR DS:[0xE4BF58]

盛大传奇私服 004018C3                        |.  40            INC EAX

004018C4                        |.  EB 67         JMP SHORT 80復古合.0040192D                                              這里恢復進程運行之后,跳轉到0040192D  



004018C6                        |>  53            PUSH EBX                                                           ; /ExitCode            寫入失敗則跳轉到此,這里進行一些退出的清理工作

004018C7                        |.  57            PUSH EDI                                                           ; |hProcess

004018C8                        |.  FF15 10C04000 CALL DWORD PTR DS:[<&KERNEL32.TerminateProcess>]                   ; \TerminateProcess

盛大传奇私服 004018CE                        |.  FFB5 08FDFFFF PUSH [LOCAL.190]                                                   ; /hObject

004018D4                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]                                        ; |

004018DA                        |.  8B35 20C04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.CloseHandle>]                     ; |kernel32.CloseHandle

004018E0                        |.  FFD6          CALL ESI                                                           ; \CloseHandle

盛大传奇私服 004018E2                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

004018E8                        |.  57            PUSH EDI                                                           ; /hObject

004018E9                        |.  FFD6          CALL ESI                                                           ; \CloseHandle

盛大传奇私服 004018EB                        |.  A1 58BFE400   MOV EAX,DWORD PTR DS:[0xE4BF58]

盛大传奇私服 004018F0                        |.  40            INC EAX

盛大传奇私服 004018F1                        |.  83CF FF       OR EDI,0xFFFFFFFF

盛大传奇私服 004018F4                        |.  EB 37         JMP SHORT 80復古合.0040192D

盛大传奇私服 004018F6                        |>  53            PUSH EBX                                                           ; /ExitCode

004018F7                        |.  57            PUSH EDI                                                           ; |hProcess

盛大传奇私服 004018F8                        |.  FF15 10C04000 CALL DWORD PTR DS:[<&KERNEL32.TerminateProcess>]                   ; \TerminateProcess

004018FE                        |.  FFB5 08FDFFFF PUSH [LOCAL.190]                                                   ; /hObject

00401904                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]                                        ; |

0040190A                        |.  8B35 20C04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.CloseHandle>]                     ; |kernel32.CloseHandle

00401910                        |.  FFD6          CALL ESI                                                           ; \CloseHandle

盛大传奇私服 00401912                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]

盛大传奇私服 00401918                        |.  57            PUSH EDI                                                           ; /hObject

00401919                        |.  FFD6          CALL ESI                                                           ; \CloseHandle

盛大传奇私服 0040191B                        |.  A1 58BFE400   MOV EAX,DWORD PTR DS:[0xE4BF58]

00401920                        |.  83CF FF       OR EDI,0xFFFFFFFF

00401923                        |.  83C0 02       ADD EAX,0x2

00401926                        |.  EB 05         JMP SHORT 80復古合.0040192D


00401928                        |>  A1 58BFE400   MOV EAX,DWORD PTR DS:[0xE4BF58]    進程創建失敗跳轉到此



0040192D                        |>  FFB5 04FDFFFF PUSH [LOCAL.191]

盛大传奇私服 00401933                        |.  40            INC EAX

盛大传奇私服 00401934                        |.  A3 58BFE400   MOV DWORD PTR DS:[0xE4BF58],EAX

00401939                        |.  E8 191A0000   CALL 80復古合.00403357                     這個call里面進行一些堆內存清理工作

0040193E                        |.  59            POP ECX



0040193F                        |>  8B4D FC       MOV ECX,[LOCAL.1]      GetProcAddress(VirtualAllocEx)失敗,則跳到此處   

00401942                        |.  8BC7          MOV EAX,EDI

盛大传奇私服 00401944                        |.  FF05 58BFE400 INC DWORD PTR DS:[0xE4BF58]         正常這里自加后=38e35,跳過創建進程等操作后=38e18

盛大传奇私服 0040194A                        |.  33CD          XOR ECX,EBP

盛大传奇私服 0040194C                        |.  5F            POP EDI

0040194D                        |.  5E            POP ESI

0040194E                        |.  5B            POP EBX

0040194F                        |.  E8 06000000   CALL 80復古合.0040195A   無用,不用管

00401954                        |.  8BE5          MOV ESP,EBP

盛大传奇私服 00401956                        |.  5D            POP EBP

00401957                        \.  C2 1C00       RETN 0x1C                       這里結束后,進程已經創建成功,并且新進程已經能正常顯示



目前知問題:

盛大传奇私服 1,登錄器通過判斷 GetProcAddress(VirtualAllocEx)的返回值來決定是否創建傀儡進程(新進程)

盛大传奇私服 2,中間有個不停出現的計數器++,目測是防止更改程序邏輯之后,檢測計數器的值來判定是否被path

3,試了通過修改 GetProcAddress(VirtualAllocEx)的返回值,來讓登錄器跳過創建傀儡進程,而自身正常運行(傀儡進程和自身進程以及游戲進程都是同一個文件,同一個邏輯)

4,代碼中有一堆寫遠程內存操作,都是修改傀儡進程PE信息的,直接path,還是出錯,目測有校驗


畫了我一天時間,實在是沒有精力搞下去了,奉上dump,以及分析的文檔,有興趣的可以試試。dump為傳奇SF登錄器,目前在運營狀態。 dump為脫殼之后的exe,需要原裝的可以打開登錄器去網站上下載

上一篇:當年的新開傳奇私服是如何出現在市面上的

下一篇:沒有了

聯系我們 | 關于我們
 |   QQ:888888  |  地址:北京市東城區  |  電話:12345678910  |  
Copyright © 2020 32145管理系統 版權所有,授權5281zw.cn使用 Powered by 55TR.COM