大家新年快乐啊。。。
有个小问题,想请教:
- C/C++ code
一个c控制台程序, 代码很简单, 已经生成exe, 如果用 od来进行 反汇编, 如何知道这个小程序的入口函数在哪里呢? vc的反汇编,不难,照着看就是了,。, 脱离了vc,比如用od来反汇编, 我就傻眼了。。。不知道其入口函数 必须找到main函数,然后开始设置断点,进行分析。 有控制台程序逆向的前辈, 给个建议,谢谢了
------解决方案--------------------
只试了几个简单的小程序。。看了个文章:http://nebulas.blog.51cto.com/812278/184106
od载入后往下f8找到GetCommandLineA。。然后下面第5个call。。我试了几个小程序是这样
- Assembly code
004010D5 |. FF15 00604000 call dword ptr [<&KERNEL32.GetCommand>; [GetCommandLineA 004010DB |. A3 24AE4000 mov dword ptr [40AE24], eax 004010E0 |. E8 1A100000 call 004020FF 004010E5 |. A3 E8984000 mov dword ptr [4098E8], eax 004010EA |. E8 C30D0000 call 00401EB2 004010EF |. E8 050D0000 call 00401DF9 004010F4 |. E8 7A0A0000 call 00401B73 004010F9 |. A1 28994000 mov eax, dword ptr [409928] 004010FE |. A3 2C994000 mov dword ptr [40992C], eax 00401103 |. 50 push eax 00401104 |. FF35 20994000 push dword ptr [409920] 0040110A |. FF35 1C994000 push dword ptr [40991C] 00401110 |. E8 FBFEFFFF call 00401010 // 貌似一般这个就是跳到main的。。 00401115 |. 83C4 0C add esp, 0C 00401118 |. 8945 E4 mov dword ptr [ebp-1C], eax
------解决方案--------------------
方法很多,你可以这样
int main()
{
__asm int 3
...
}
然后直接在调试器里运行,到了__asm int 3就会断点