能力值:
( LV2,RANK:10 )
|
-
-
26 楼
弱弱的一句,这题只有这一种解决方法吗?
想请教下找入口点的方法原理啊,小弟没有看懂这点啊!
|
能力值:
( LV13,RANK:530 )
|
-
-
27 楼
被发现了
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
比赛真是把一大把的牛人都给逼出来了
又发现自己甚么都不懂了
|
能力值:
(RANK:170 )
|
-
-
29 楼
看了下lordpe,知道如何分割了,但是如何从开始的三个文件合并呢,谢谢;)
主要分割后出现一个.lpe文件
把你的想法分享一下吧
|
能力值:
( LV4,RANK:50 )
|
-
-
30 楼
这道题用Delphi我想可以这样做:
写一个DLL,在pediy的窗口创建后loadlibary进去。
在程序里创建TMainMenu类,然后添加Help和About,在用SetMenu(MainMenu1.Handle);来把菜单挂上去。
然后做一个消息钩子把窗口的消息钩住,拦截WM_COMMAND消息,再在Hook程序内MessageBox就可以了。
当时我是用直接写汇编来做的:
分别在CreateWindowEx和DispatchMessage那里作跳转,然后对应的两段代码如下:
00406C00 > \FF15 10714000 CALL DWORD PTR DS:[<&USER32.CreateWindow>; \CreateWindowExA
00406C06 . 60 PUSHAD
00406C07 . A3 F0B04000 MOV DWORD PTR DS:[40B0F0],EAX
00406C0C . 68 B8754000 PUSH pediy02.004075B8 ; /FileName = "user32.dll"
00406C11 . FF15 6C704000 CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
00406C17 . 8BF8 MOV EDI,EAX
00406C19 . 8B35 A0704000 MOV ESI,DWORD PTR DS:[<&KERNEL32.GetProc>; kernel32.GetProcAddress
00406C1F . 68 10B04000 PUSH pediy02.0040B010 ; /ProcNameOrOrdinal = "CreateMenu"
00406C24 . 57 PUSH EDI ; |hModule
00406C25 . FFD6 CALL ESI ; \GetProcAddress
00406C27 . A3 80B04000 MOV DWORD PTR DS:[40B080],EAX
00406C2C . 68 20B04000 PUSH pediy02.0040B020 ; /ProcNameOrOrdinal = "InsertMenuItemA"
00406C31 . 57 PUSH EDI ; |hModule
00406C32 . FFD6 CALL ESI ; \GetProcAddress
00406C34 . A3 84B04000 MOV DWORD PTR DS:[40B084],EAX
00406C39 . 68 50B04000 PUSH pediy02.0040B050 ; /ProcNameOrOrdinal = "SetMenu"
00406C3E . 57 PUSH EDI ; |hModule
00406C3F . FFD6 CALL ESI ; \GetProcAddress
00406C41 . A3 88B04000 MOV DWORD PTR DS:[40B088],EAX
00406C46 . 68 60B04000 PUSH pediy02.0040B060 ; /ProcNameOrOrdinal = "MessageBoxA"
00406C4B . 57 PUSH EDI ; |hModule
00406C4C . FFD6 CALL ESI ; \GetProcAddress
00406C4E . A3 8CB04000 MOV DWORD PTR DS:[40B08C],EAX
00406C90 . FF15 80B04000 CALL DWORD PTR DS:[40B080] ; USER32.CreateMenu
00406C96 . A3 90B04000 MOV DWORD PTR DS:[40B090],EAX
00406C9B . 68 00B14000 PUSH pediy02.0040B100
00406CA0 . 68 FF000000 PUSH 0FF
00406CA5 . 6A 00 PUSH 0
00406CA7 . 50 PUSH EAX
00406CA8 . FF15 84B04000 CALL DWORD PTR DS:[40B084] ; USER32.InsertMenuItemA
00406CAE . A1 90B04000 MOV EAX,DWORD PTR DS:[40B090]
00406CB3 . A3 44B14000 MOV DWORD PTR DS:[40B144],EAX
00406CB8 . FF15 80B04000 CALL DWORD PTR DS:[40B080] ; USER32.CreateMenu
00406CBE . A3 94B04000 MOV DWORD PTR DS:[40B094],EAX
00406CC3 . 68 30B14000 PUSH pediy02.0040B130
00406CC8 . 68 FF000000 PUSH 0FF
00406CCD . 6A 00 PUSH 0
00406CCF . 50 PUSH EAX
00406CD0 . FF15 84B04000 CALL DWORD PTR DS:[40B084] ; USER32.InsertMenuItemA
00406CD6 . FF35 94B04000 PUSH DWORD PTR DS:[40B094]
00406CDC . FF35 F0B04000 PUSH DWORD PTR DS:[40B0F0]
00406CE2 . FF15 88B04000 CALL DWORD PTR DS:[40B088] ; USER32.SetMenu
00406CE8 . 61 POPAD
00406CE9 .^ E9 9AA5FFFF JMP pediy02.00401288
00406D00 > \8178 04 11010000 CMP DWORD PTR DS:[EAX+4],111
00406D07 . 75 77 JNZ SHORT pediy02.00406D80
00406D09 . 6A 40 PUSH 40
00406D0B . 68 8C804000 PUSH pediy02.0040808C ; ASCII "pediy"
00406D10 . 68 00B24000 PUSH pediy02.0040B200
00406D15 . FF35 F0B04000 PUSH DWORD PTR DS:[40B0F0]
00406D1B . FF15 8CB04000 CALL DWORD PTR DS:[40B08C] ; USER32.MessageBoxA
00406D80 > \FF15 24714000 CALL DWORD PTR DS:[<&USER32.DispatchMess>; \DispatchMessageA
00406D86 .^ E9 37A5FFFF JMP pediy02.004012C2
|
|
|