首页
社区
课程
招聘
[原创]第一阶段第二题我的笨方法+处理的文件(看雪金山2007逆向分析挑战赛)
发表于: 2007-8-27 12:00 12953

[原创]第一阶段第二题我的笨方法+处理的文件(看雪金山2007逆向分析挑战赛)

2007-8-27 12:00
12953
收藏
免费 7
支持
分享
最新回复 (29)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
弱弱的一句,这题只有这一种解决方法吗?
         想请教下找入口点的方法原理啊,小弟没有看懂这点啊!
2007-8-27 22:52
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
27
被发现了
2007-8-27 23:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
比赛真是把一大把的牛人都给逼出来了
    又发现自己甚么都不懂了  
2007-8-27 23:38
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
29
看了下lordpe,知道如何分割了,但是如何从开始的三个文件合并呢,谢谢;)
主要分割后出现一个.lpe文件
把你的想法分享一下吧
2007-8-28 10:23
0
雪    币: 212
活跃值: (10)
能力值: ( 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
2007-8-28 11:44
0
游客
登录 | 注册 方可回帖
返回
//