首页
社区
课程
招聘
我是菜鸟,自编自解的问题?
2006-4-13 08:07 4366

我是菜鸟,自编自解的问题?

2006-4-13 08:07
4366
首先我用vc++编了一个很简单的程序,程序清单如下:
#include <iostream>

int main()
{
    using std::cout;
    using std::cin;
    long int a;
    cout<<"please enter password:";
    cin >>a;
    if(a==12345678)
    cout<<"your password is right\n";
    else
    cout<<"i'm sorry,your password is wrong\n";
    return 0;
}
然后我用ollydbg跟踪,能够在我自己编的提示下找到代码如下:
00401690    55               push ebp
00401691    8BEC             mov ebp,esp
00401693    83EC 44          sub esp,44
00401696    53               push ebx
00401697    56               push esi
00401698    57               push edi
00401699    8D7D BC          lea edi,dword ptr ss:[ebp-44]
0040169C    B9 11000000      mov ecx,11
004016A1    B8 CCCCCCCC      mov eax,CCCCCCCC
004016A6    F3:AB            rep stos dword ptr es:[edi]
004016A8    68 60D04600      push Cpp1.0046D060                       ; ASCII "please enter password:"
004016AD    68 F8874700      push Cpp1.004787F8
004016B2    E8 50FCFFFF      call Cpp1.00401307
004016B7    83C4 08          add esp,8
004016BA    8D45 FC          lea eax,dword ptr ss:[ebp-4]
004016BD    50               push eax
004016BE    B9 88884700      mov ecx,Cpp1.00478888
004016C3    E8 81FBFFFF      call Cpp1.00401249
004016C8    817D FC 4E61BC00 cmp dword ptr ss:[ebp-4],0BC614E
004016CF    75 14            jnz short Cpp1.004016E5
004016D1    68 44D04600      push Cpp1.0046D044                       ; ASCII "your password is right
"
004016D6    68 F8874700      push Cpp1.004787F8
004016DB    E8 27FCFFFF      call Cpp1.00401307
004016E0    83C4 08          add esp,8
004016E3    EB 12            jmp short Cpp1.004016F7
004016E5    68 1CD04600      push Cpp1.0046D01C                       ; ASCII "i'm sorry,your password is wrong
"
004016EA    68 F8874700      push Cpp1.004787F8
004016EF    E8 13FCFFFF      call Cpp1.00401307
004016F4    83C4 08          add esp,8
004016F7    33C0             xor eax,eax
004016F9    5F               pop edi
004016FA    5E               pop esi
004016FB    5B               pop ebx
004016FC    83C4 44          add esp,44
004016FF    3BEC             cmp ebp,esp
00401701    E8 EAFC0100      call Cpp1.004213F0
00401706    8BE5             mov esp,ebp
00401708    5D               pop ebp
00401709    C3               retn

我的问题是:1,为什么我用f8单步跟踪的时候并不是从这个地方开始的?
           2,为什么我用win32dasm无极版反汇编的时候,连这么明显的提示都
子串都不能找到?
我是菜鸟,所以我想学习,希望有人指明,让我少走弯路!!!!!!
感谢看雪论坛!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 32401
活跃值: (18850)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2006-4-13 09:28
2
0
1.VC程序开始那段代码是启动函数,主要是初始化一些环境,然后再跳到你的程序代码执行。
2.也许你的“win32dasm无极版”不好用,换C32Asm试试。
雪    币: 181
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
foretell 2006-4-13 09:32
3
0
学习!
雪    币: 256
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
coldpine 6 2006-4-13 09:36
4
0
感谢坛主,等了很久终于有人回答了!!或许对你们而言很简单,
但是对我很重要!!
但是对于第一个问题,我连续按f8后来停在call调用上,再怎么按
都停止在那里啦!
雪    币: 256
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
coldpine 6 2006-4-13 09:41
5
0
第二个问题确实可能是软件的问题
换了c32可以查到!
雪    币: 256
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
coldpine 6 2006-4-13 09:50
6
0
请问看雪大哥:
我是这样想的,首先运行的代码确实是程序的代码,只不过,main
这个函数也是被调用的一个函数,所以我发出来的那些代码其实
都在main这个函数中,所以那个函数的判断实际上是看到不的!
除非跟进!!!!请问是不是这样的理解!!!
游客
登录 | 注册 方可回帖
返回