大家新年快乐啊。。。
有个小问题,想请教:
一个c控制台程序, 代码很简单, 已经生成exe,
如果用 od来进行 反汇编, 如何知道这个小程序的入口函数在哪里呢?
vc的反汇编,不难,照着看就是了,。,
脱离了vc,比如用od来反汇编, 我就傻眼了。。。不知道其入口函数
必须找到main函数,然后开始设置断点,进行分析。
有控制台程序逆向的前辈, 给个建议,谢谢了
18 个解决方案
#1
#3
你误会了
我的意思是 不借助vc
用od来分析反汇编
如何快速找到 main函数的入口地址
我们知道, vc生成的exe, 它映射到虚拟地址空间中的基地址是0040 0000h
但是main函数并不是
我的意思是 不借助vc
用od来分析反汇编
如何快速找到 main函数的入口地址
我们知道, vc生成的exe, 它映射到虚拟地址空间中的基地址是0040 0000h
但是main函数并不是
#4
我不知道,是不是每一个console程序 的main地址 是否一致
有经验的前辈,是如何快速的进入入口函数呢
#5
这个楼主我帮不了你,没做过类似工作。不好意思
#6
没事, 会这个的,不多
谢谢了啊
谢谢了啊
#7
只试了几个简单的小程序。。看了个文章:
http://nebulas.blog.51cto.com/812278/184106
od载入后往下f8找到GetCommandLineA。。然后下面第5个call。。我试了几个小程序是这样
od载入后往下f8找到GetCommandLineA。。然后下面第5个call。。我试了几个小程序是这样
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
#8
方法很多,你可以这样
int main()
{
__asm int 3
...
}
然后直接在调试器里运行,到了__asm int 3就会断点
int main()
{
__asm int 3
...
}
然后直接在调试器里运行,到了__asm int 3就会断点
#9
int main()
{
std::cout<<"xyz";
return 0;
}
od加载后,程序启动的地址为:
77A10194 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
按f8后,一直到
77A1FC4B 64:FF15 C000000 CALL DWORD PTR FS:[C0]
77A1FC52 83C4 04 ADD ESP,4
77A1FC55 C2 0800 RETN 8
就停止了,输出为'xyz"
然后按f8,没有反应
平台是:win7 64位
ctrl+g 来查找 "xyz" ,也没有招到
{
std::cout<<"xyz";
return 0;
}
od加载后,程序启动的地址为:
77A10194 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
按f8后,一直到
77A1FC4B 64:FF15 C000000 CALL DWORD PTR FS:[C0]
77A1FC52 83C4 04 ADD ESP,4
77A1FC55 C2 0800 RETN 8
就停止了,输出为'xyz"
然后按f8,没有反应
平台是:win7 64位
ctrl+g 来查找 "xyz" ,也没有招到
#10
win7 64位平台, 很是奇怪
比如: 比如我写了了个很简单的汇编程序,在 xp od调试, 刚开始的时候,有个启动地址
和win7 od 调试 的启动地址,是不一样的
不知道这是不是操作系统的原因。。。。
确实没有7楼所说的 00401000 h 这个地址
#11
http://wenku.baidu.com/view/d477c0cea1c7aa00b52acb0f.html
这是一篇关于 逆向寻找main函数的地址的文章
感觉只能对于xp 平台
9楼遇到的问题, 是win7 ,所以没有进入那个004010000h
7楼用的操作系统, 是不是win7???
这是一篇关于 逆向寻找main函数的地址的文章
感觉只能对于xp 平台
9楼遇到的问题, 是win7 ,所以没有进入那个004010000h
7楼用的操作系统, 是不是win7???
#12
optional header里面就有入口点
#13
我的环境是Win xp 32Bit
#14
多谢
光会汇编不够,
离逆向还远
我以为一个简单的几行代码的控制台程序,逆向会容易些,
挺麻烦的, 没有基础,main函数都难以找到
谢谢各位。。。 祝大家春节快乐
光会汇编不够,
离逆向还远
我以为一个简单的几行代码的控制台程序,逆向会容易些,
挺麻烦的, 没有基础,main函数都难以找到
谢谢各位。。。 祝大家春节快乐
#15
。。。。你需要切换到你写的exe模块
然后 选择 查找》当前模块中的所有名称
如果是UNICODE 直接查找 main
如果是ANSI 直接超找 wmain
这个地址就是所谓的Console下自己写的_tmain的真正入口。
附上一个参考
<a href="http://www.mouseos.com/programming/windows/main.html">http://www.mouseos.com/programming/windows/main.html</a>
然后 选择 查找》当前模块中的所有名称
如果是UNICODE 直接查找 main
如果是ANSI 直接超找 wmain
这个地址就是所谓的Console下自己写的_tmain的真正入口。
附上一个参考
<a href="http://www.mouseos.com/programming/windows/main.html">http://www.mouseos.com/programming/windows/main.html</a>
#16
更正一下。。
如果是UNICODE 直接查找 wmain
如果是ANSI 直接超找 main
#17
http://hi.csdn.net/attachment/201002/5/1341783_12653828046fza.jpg
测试一个发图
测试一个发图
#18
根本不用od和vc,直接分析pe格式就结鸟。
#1
#2
想要知道汇编代码vc中有相应的功能
http://blog.csdn.net/yiyefangzhou24/article/details/6440239
#3
你误会了
我的意思是 不借助vc
用od来分析反汇编
如何快速找到 main函数的入口地址
我们知道, vc生成的exe, 它映射到虚拟地址空间中的基地址是0040 0000h
但是main函数并不是
我的意思是 不借助vc
用od来分析反汇编
如何快速找到 main函数的入口地址
我们知道, vc生成的exe, 它映射到虚拟地址空间中的基地址是0040 0000h
但是main函数并不是
#4
我不知道,是不是每一个console程序 的main地址 是否一致
有经验的前辈,是如何快速的进入入口函数呢
#5
这个楼主我帮不了你,没做过类似工作。不好意思
#6
没事, 会这个的,不多
谢谢了啊
谢谢了啊
#7
只试了几个简单的小程序。。看了个文章:
http://nebulas.blog.51cto.com/812278/184106
od载入后往下f8找到GetCommandLineA。。然后下面第5个call。。我试了几个小程序是这样
od载入后往下f8找到GetCommandLineA。。然后下面第5个call。。我试了几个小程序是这样
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
#8
方法很多,你可以这样
int main()
{
__asm int 3
...
}
然后直接在调试器里运行,到了__asm int 3就会断点
int main()
{
__asm int 3
...
}
然后直接在调试器里运行,到了__asm int 3就会断点
#9
int main()
{
std::cout<<"xyz";
return 0;
}
od加载后,程序启动的地址为:
77A10194 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
按f8后,一直到
77A1FC4B 64:FF15 C000000 CALL DWORD PTR FS:[C0]
77A1FC52 83C4 04 ADD ESP,4
77A1FC55 C2 0800 RETN 8
就停止了,输出为'xyz"
然后按f8,没有反应
平台是:win7 64位
ctrl+g 来查找 "xyz" ,也没有招到
{
std::cout<<"xyz";
return 0;
}
od加载后,程序启动的地址为:
77A10194 895C24 08 MOV DWORD PTR SS:[ESP+8],EBX
按f8后,一直到
77A1FC4B 64:FF15 C000000 CALL DWORD PTR FS:[C0]
77A1FC52 83C4 04 ADD ESP,4
77A1FC55 C2 0800 RETN 8
就停止了,输出为'xyz"
然后按f8,没有反应
平台是:win7 64位
ctrl+g 来查找 "xyz" ,也没有招到
#10
win7 64位平台, 很是奇怪
比如: 比如我写了了个很简单的汇编程序,在 xp od调试, 刚开始的时候,有个启动地址
和win7 od 调试 的启动地址,是不一样的
不知道这是不是操作系统的原因。。。。
确实没有7楼所说的 00401000 h 这个地址
#11
http://wenku.baidu.com/view/d477c0cea1c7aa00b52acb0f.html
这是一篇关于 逆向寻找main函数的地址的文章
感觉只能对于xp 平台
9楼遇到的问题, 是win7 ,所以没有进入那个004010000h
7楼用的操作系统, 是不是win7???
这是一篇关于 逆向寻找main函数的地址的文章
感觉只能对于xp 平台
9楼遇到的问题, 是win7 ,所以没有进入那个004010000h
7楼用的操作系统, 是不是win7???
#12
optional header里面就有入口点
#13
我的环境是Win xp 32Bit
#14
多谢
光会汇编不够,
离逆向还远
我以为一个简单的几行代码的控制台程序,逆向会容易些,
挺麻烦的, 没有基础,main函数都难以找到
谢谢各位。。。 祝大家春节快乐
光会汇编不够,
离逆向还远
我以为一个简单的几行代码的控制台程序,逆向会容易些,
挺麻烦的, 没有基础,main函数都难以找到
谢谢各位。。。 祝大家春节快乐
#15
。。。。你需要切换到你写的exe模块
然后 选择 查找》当前模块中的所有名称
如果是UNICODE 直接查找 main
如果是ANSI 直接超找 wmain
这个地址就是所谓的Console下自己写的_tmain的真正入口。
附上一个参考
<a href="http://www.mouseos.com/programming/windows/main.html">http://www.mouseos.com/programming/windows/main.html</a>
然后 选择 查找》当前模块中的所有名称
如果是UNICODE 直接查找 main
如果是ANSI 直接超找 wmain
这个地址就是所谓的Console下自己写的_tmain的真正入口。
附上一个参考
<a href="http://www.mouseos.com/programming/windows/main.html">http://www.mouseos.com/programming/windows/main.html</a>
#16
更正一下。。
如果是UNICODE 直接查找 wmain
如果是ANSI 直接超找 main
#17
http://hi.csdn.net/attachment/201002/5/1341783_12653828046fza.jpg
测试一个发图
测试一个发图
#18
根本不用od和vc,直接分析pe格式就结鸟。