首页
社区
课程
招聘
首次见这样的入口点代码不知为何种编译器
发表于: 2006-3-18 21:12 5052

首次见这样的入口点代码不知为何种编译器

2006-3-18 21:12
5052
00401839 0>/$  33C0              xor eax,eax
0040183B   |.  A3 40B04000       mov dword ptr ds:[40B040],eax
00401840   |.  6A 00             push 0                            ; /pModule = NULL
00401842   |.  E8 ED000000       call <jmp.&kernel32.GetModuleHand>; \GetModuleHandleA
00401847   |.  A3 04B04000       mov dword ptr ds:[40B004],eax
0040184C   |.  58                pop eax
0040184D   |.  A3 38B04000       mov dword ptr ds:[40B038],eax
00401852   |.  50                push eax
00401853   |.  E8 C5FDFFFF       call 00.0040161D
00401858   |.  FF35 00B04000     push dword ptr ds:[40B000]        ; /hWnd = NULL
0040185E   |.  E8 C5000000       call <jmp.&user32.UpdateWindow>   ; \UpdateWindow
00401863   |>  6A 00             /push 0                           ; /MsgFilterMax = 0
00401865   |.  6A 00             |push 0                           ; |MsgFilterMin = 0
00401867   |.  6A 00             |push 0                           ; |hWnd = NULL
00401869   |.  68 08B04000       |push 00.0040B008                 ; |pMsg = 00.0040B008
0040186E   |.  E8 6D000000       |call <jmp.&user32.GetMessageA>   ; \GetMessageA
00401873   |.  0BC0              |or eax,eax
00401875   |.  74 2E             |je short 00.004018A5
00401877   |.  A1 40B04000       |mov eax,dword ptr ds:[40B040]
0040187C   |.  0BC0              |or eax,eax
0040187E   |.  74 0F             |je short 00.0040188F
00401880   |.  68 08B04000       |push 00.0040B008                 ; /pMsg = WM_NULL
00401885   |.  50                |push eax                         ; |hWnd
00401886   |.  E8 61000000       |call <jmp.&user32.IsDialogMessag>; \IsDialogMessageA
0040188B   |.  0BC0              |or eax,eax
0040188D   |.^ 75 D4             |jnz short 00.00401863
0040188F   |>  68 08B04000       |push 00.0040B008                 ; /pMsg = WM_NULL
00401894   |.  E8 89000000       |call <jmp.&user32.TranslateMessa>; \TranslateMessage
00401899   |.  68 08B04000       |push 00.0040B008                 ; /pMsg = WM_NULL
0040189E   |.  E8 2B000000       |call <jmp.&user32.DispatchMessag>; \DispatchMessageA
004018A3   |.^ EB BE             \jmp short 00.00401863
004018A5   |>  A1 10B04000       mov eax,dword ptr ds:[40B010]
004018AA   |.  50                push eax                          ; /ExitCode => 0
004018AB   \.  E8 7E000000       call <jmp.&kernel32.ExitProcess>  ; \ExitProcess
004018B0       E8                db E8
004018B1       9D                db 9D
004018B2       00                db 00
004018B3       00                db 00
004018B4       00                db 00
004018B5       CC                int3
004018B6    $- FF25 40A14000     jmp dword ptr ds:[<&user32.wsprin>;  USER32.wsprintfA
004018BC    $- FF25 38A14000     jmp dword ptr ds:[<&user32.Adjust>;  USER32.AdjustWindowRect
004018C2    $- FF25 34A14000     jmp dword ptr ds:[<&user32.Create>;  USER32.CreateWindowExA
004018C8    >- FF25 30A14000     jmp dword ptr ds:[<&user32.DefWin>;  USER32.DefWindowProcA
004018CE    $- FF25 2CA14000     jmp dword ptr ds:[<&user32.Dispat>;  USER32.DispatchMessageA
004018D4    $- FF25 28A14000     jmp dword ptr ds:[<&user32.Enable>;  USER32.EnableWindow
004018DA    $- FF25 24A14000     jmp dword ptr ds:[<&user32.GetDlg>;  USER32.GetDlgItem
004018E0    $- FF25 20A14000     jmp dword ptr ds:[<&user32.GetMes>;  USER32.GetMessageA
004018E6    $- FF25 1CA14000     jmp dword ptr ds:[<&user32.GetSys>;  USER32.GetSystemMetrics
004018EC    $- FF25 18A14000     jmp dword ptr ds:[<&user32.IsDial>;  USER32.IsDialogMessageA
004018F2    $- FF25 9CA04000     jmp dword ptr ds:[<&user32.LoadCu>;  USER32.LoadCursorA
004018F8    $- FF25 90A04000     jmp dword ptr ds:[<&user32.LoadIc>;  USER32.LoadIconA
004018FE    $- FF25 8CA04000     jmp dword ptr ds:[<&user32.PostMe>;  USER32.PostMessageA
00401904    $- FF25 88A04000     jmp dword ptr ds:[<&user32.PostQu>;  USER32.PostQuitMessage
0040190A    $- FF25 84A04000     jmp dword ptr ds:[<&user32.Regist>;  USER32.RegisterClassExA
00401910    $- FF25 80A04000     jmp dword ptr ds:[<&user32.SendDl>;  USER32.SendDlgItemMessageA
00401916    $- FF25 74A04000     jmp dword ptr ds:[<&user32.SendMe>;  USER32.SendMessageA
0040191C    $- FF25 70A04000     jmp dword ptr ds:[<&user32.ShowWi>;  USER32.ShowWindow
00401922    $- FF25 78A04000     jmp dword ptr ds:[<&user32.Transl>;  USER32.TranslateMessage
00401928    $- FF25 7CA04000     jmp dword ptr ds:[<&user32.Update>;  USER32.UpdateWindow
0040192E    .- FF25 B4A14000     jmp dword ptr ds:[<&kernel32.Exit>;  kernel32.ExitProcess
00401934    $- FF25 B0A14000     jmp dword ptr ds:[<&kernel32.GetM>;  kernel32.GetModuleHandleA
0040193A    $- FF25 ACA14000     jmp dword ptr ds:[<&kernel32.RtlZ>;  ntdll.RtlZeroMemory
00401940    $- FF25 60A04000     jmp dword ptr ds:[<&GDI32.CreateF>;  GDI32.CreateFontA
00401946    $- FF25 4CA04000     jmp dword ptr ds:[<&GDI32.CreateS>;  GDI32.CreateSolidBrush
0040194C    $- FF25 48A04000     jmp dword ptr ds:[<&GDI32.GetStoc>;  GDI32.GetStockObject
00401952    .- FF25 00A04000     jmp dword ptr ds:[<&COMCTL32.Init>;  COMCTL32.InitCommonControls

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
该程序已无壳
2006-3-18 21:21
0
雪    币: 342
活跃值: (323)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
3
IAT很像Delphi
2006-3-18 21:40
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
我猜是MASM32
用的是排除法,原因如下
如果是delphi
1. FF25[XXX]之间会有mov eax, eax 的4字节对齐
2. 上手会mov eax, XXX; call XXXX 的初始化call
这里都没有,所以我猜不是delphi

如果是VC
GetModuleHandleA和ExitProcess等的调用应该是FF15而不是FF25
所以我猜不是VC

BC就更不是了
所以我猜是MASM32

401810 的call 401952<jmp.&COMCTL32.InitCommonControls>比较巧妙啊
2006-3-18 23:57
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
嗯  看样子是汇编
2006-3-19 01:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
该程式很精妙。我当初也猜是ASM,但不敢肯定,现在可以确定了。谢谢各位。
2006-3-19 22:13
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
004016A5   |.  C745 B0 30000000  mov dword ptr ss:[ebp-50],30
004016AC   |.  C745 B4 00000000  mov dword ptr ss:[ebp-4C],0
004016B3   |.  C745 B8 67154000  mov dword ptr ss:[ebp-48],00.00401567
004016BA   |.  FF35 04B04000     push dword ptr ds:[40B004]
004016C0   |.  8F45 C4           pop dword ptr ss:[ebp-3C]
004016C3   |.  C745 D4 00000000  mov dword ptr ss:[ebp-2C],0
004016CA   |.  C745 D8 0B104000  mov dword ptr ss:[ebp-28],00.0040100B  ;  ASCII "WinASM_Class"
004016D1   |.  6A 01             push 1                                 ; /RsrcName = 1.
004016D3   |.  FF35 04B04000     push dword ptr ds:[40B004]             ; |hInst = NULL
004016D9   |.  E8 1A020000       call <jmp.&user32.LoadIconA>           ; \LoadIconA
004016DE   |.  8945 C8           mov dword ptr ss:[ebp-38],eax
004016E1   |.  68 007F0000       push 7F00                              ; /RsrcName = IDC_ARROW
004016E6   |.  6A 00             push 0                                 ; |hInst = NULL
004016E8   |.  E8 05020000       call <jmp.&user32.LoadCursorA>         ; \LoadCursorA
004016ED   |.  8945 CC           mov dword ptr ss:[ebp-34],eax
004016F0   |.  68 4662A600       push 0A66246                           ; /Color = RGB(70.,98.,166.)
004016F5   |.  E8 4C020000       call <jmp.&GDI32.CreateSolidBrush>     ; \CreateSolidBrush
004016FA   |.  8945 D0           mov dword ptr ss:[ebp-30],eax
004016FD   |.  8D45 B0           lea eax,dword ptr ss:[ebp-50]
00401700   |.  50                push eax                               ; /pWndClassEx
00401701   |.  E8 04020000       call <jmp.&user32.RegisterClassExA>    ; \RegisterClassExA
2006-3-19 22:20
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
IsDialogMessageA一般编译器的确很少看到
2006-3-20 08:56
0
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
VC和BC的消息循环都在winmain涵数里,这么简洁的代码,非ASM莫属
2006-3-20 10:05
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 堀北真希 发布
我猜是MASM32
用的是排除法,原因如下
如果是delphi
1. FF25[XXX]之间会有mov eax, eax 的4字节对齐
2. 上手会mov eax, XXX; call XXXX 的初始化call
........


大家来猜猜我这几个是什么编译器编译的呢?嘻嘻。
上传的附件:
2006-3-20 13:35
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
最初由 Aming 发布
大家来猜猜我这几个是什么编译器编译的呢?嘻嘻。


没有见过过哦,完全不懂
请教Aming大侠
2006-3-20 14:00
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2006-3-20 14:29
0
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
Aming自己写的编译器,asm+vb+vc+vfp自动联合编译
2006-3-20 14:39
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 heXer 发布
Aming自己写的编译器,asm+vb+vc+vfp自动联合编译


YIN魔说出来的话果然不同凡响!
这个编译器是纯VB代码写的,没有用任何内嵌ASM。
语法和结构自己定义,可以编译EXE/DLL和控制台的程序,支持内嵌ASM[需要指定FASM的途径]。
2006-3-21 16:40
0
雪    币: 254
活跃值: (126)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
15
我猜的八九不离十,应该做为奖品发给我用
2006-3-21 17:08
0
游客
登录 | 注册 方可回帖
返回
//