你可以使用wdasm89,可以静态反汇编,一切表露无疑。

解决方案 »

  1.   

    对了,softice还是在98中使用的好,而且你的版本也该升级了。
      

  2.   

    哪里有的下?SoftICE的最新版是多少?什么地方有?
      

  3.   

    SoftICE 4.0 ,现在虽然我已经把那个2000的系统文件成功替换了,但SoftICE的使用还是有问题。用VC调是好像很难实现函数调用的跟踪。
      

  4.   

    嗯,是呀,我是想问s-ice出问题了不能跟系统函数么?
      

  5.   

    我用的是2000 Adv Server , SoftICE运行之后,一执行Load Symbols就黑屏,然后显示器的灯乱闪,就象是装Linux时显示器没有配置好的情形。但我选的是Standard VGA,改了几个驱动还是不行 :(
      

  6.   

    :( 我没在2000下用过s-ice,我看当务之急还是想办法在2000下调好sice,到时候别忘了告诉我一声呀,呵呵~~我不想拿我的机子做实验 *_^
      

  7.   

    To: singlerace  我要调的程序是发行版的执行文件,当然也没有源码。如何确定一个系统函数掉的入口地址呢?如果能确定DLL的加载地址也可以
      

  8.   

    没搞头喽~呵呵~系统DLL加载位置一般都不会变,我刚才用VC调了一下,[email protected]的位置和用eXescope看到的是一样的,那样user32.dll其他func也就都一样,你再试试看。
      

  9.   

    eXescope ??什么东东?没听过,别说是VC带的工具哦……否则我会跳楼的
      

  10.   

    所有的win32s程序调用系统函数都是同一个入口,仔细研究文件头你会有所发现的
      

  11.   

    但是我如何确定某一个函数的入口呢?32位程序每个进程的内存空间独立,这个我也知道,但有些事还是不太明白。Depends下面有一个Base Address,为什么这个地址加上上面的函数偏址不是函数入口?
      

  12.   

    偶昏...eXescope不知道?
    我用depends看了一下,base addr+entry addr是等于实际地址,我不知道怎么会有问题,除非dll被重定位,而对于系统dll,这种可能性很小,但都有.reloc表,就存在这种可能,如果真的,那就恭喜你了,呵呵~
    能不能告诉我你跟踪的详细方法和步骤?
    BTW:jsyou说的"所有系统函数"同一入口是什么意思?能否详细说明一下?谢谢~
      

  13.   

    我还是把目的说一下吧。
    我想Crack一个程序,程序的序列号是存放在注册表中,用Depends察看程序,发现有一个对RegOpenKeyA的调用,所以我想气球序列号的运算一定就在后面,但我现在无法确定RegOpenKeyA的入口地址。
    刚才我试了一下,USER32.DLL中的EndDialog可以正确定位,但RegOpenKeyA还是不行,那个地址一看就不是函数的入口。
      

  14.   

    那一行的语句为
    mov     edx,dword ptr [esp+0Ch]
    这好象不应该是一个函数入口,而且我无法在这个地方设断点,这不是有效地址。可能也不该是这么算的,否则Depends右上方的Entry Point也不该是Not Bound .Depends的帮助说这个地址是载加载动态库时才定的。
      

  15.   

    不过那条语句是对的
    0x77d983fa: mov    edx,dword ptr [esp+0Ch]
    0x77d983fe: test edx,edx
    0x77d98400: je 77dc4402
    .....
    你用VC写一条RegOpenKey跟进去看看就知道了
    dll地址很有可能变,但系统dll一般是固定的,这在ms设计os的时候已经考虑好了。
      

  16.   

        我自己的程序中倒是停到那里了,但为什么我要跟踪的程序就不行呢!!!那是一个屏保程序,它明明使用了RegOpenKeyA,但为什么说那个地址无效呢!!真搞不懂 :(
        大家再想一想,过两天给分
      

  17.   

    有点怪,如果没有进入调用倒是正常,为什么地址无效?是VC的debug说地址无效么?
    我自己写一个程序,用RegOpenKey,debug release的exe文件,都可以进入那个调用,看来先要弄明白屏保的特殊之处。
    你能不能跟进那个程序其他的系统dll调用?
      

  18.   

    是VC的debug说地址无效!!
    我可以跟进EndDialog调用
    刚才我有想了想,难道是这个程序人工加载ADVAPI32.DLL的?手工加载和自动加载有区别吗?
      

  19.   

    手工加载位置也不变,没什么区别,编译后都是在import表里指明。
      

  20.   

    喂!我说Searph,怎么不回答了?
      

  21.   

    faint~~你怎么不给我发mail呀~~我试过了,手工加载位置一样~~
      

  22.   

    I faint twice^99 !!!
    哪个东西我早都发过去了,难道你没收到那个程序!!我再发一次!
      

  23.   

    我刚刚收到,我看到有个傻小子给我一个exe,以为是当我菜鸟给我木马,你都不注明是干吗用的,嘿嘿~~
      

  24.   

    哪个贴子?什么书?我脑子memory少,过去就忘,在这儿告诉我吧~~~:)
      

  25.   

    哦~~我只有一本高级编程,核心是从网上down的,呵呵~~不过这儿有卖的,把你的地址mail给我吧,钱不要了,给我个3、5000分就可以了~~嘿嘿~~:)
      

  26.   

    我调试了,根本没有调用RegOpenKeyA嘛~~呵呵~~再说了,你要看基址,在debug菜单里面不是有嘛~~:)
    它调用了RegCreateKeyExA(0x77d98f62)、RegQueryValueExA(0x77d9858e)、RegCloseKey(0x77d97d4d),这三个都正确跟踪,说明跟踪没有错误,唯一的解释就是它用的是RegCreateKeyExA而不是RegOpenKeyA来打开注册表键的,你跟踪这三个就可以了,我就不管了~~:)
    另外,刚开始的提示信息说breakpoint无效应该是在调用DbgBreakPoint(ntdll.dll)之前,你不要管它,按F10之后把所有的breakpoint重新enable就可以了。
      

  27.   

    难道是Depends骗俺???那小子说调用这个函数了,真是岂有此理,回头找他算账去!!!我的信想你敢说不知道?[email protected],给你发过两次信了!!贴子再放一天,明天加分。290分加到你头上,天哪……
      

  28.   

    没有骗你,我看过那个scr文件的import表,确实有这个引用,只是在开始运行的时候没有用而已。
    BTW:俺说的是给你寄书的地址,把那个地址给我呀,不然怎么邮给你?另外谢谢你的分了,嘿嘿~~:)
      

  29.   

    广东省惠州市鹅岭南路六号TCL工业大厦5楼信息管理部 白永亮 516001
    谢了先!
    对了,RMB多少?我寄钱。
      

  30.   

    钱我不要了,有空请我吃饭吧,嘿嘿~~
    (BTW:可能不会很快给你,我要到周末才有时间买书)
      

  31.   

    嘿嘿……你好阴险,真不是陷俺于不仁不义之地吗?如果不给钱以后道上就没人帮俺买书喽……你还是说一下吧,发E-Mail也可以,说不定以后还要烦劳老兄了
      

  32.   

    faint....被你看穿,连小孩子都骗不了~~真是长江后浪推前浪,前浪死在沙滩上~~:(
    我先给你寄了再说吧,说不定哪天memory溢出我把这事都忘了~~~
      

  33.   

    好久没来看了。
    我在winnt4.0下试了softice for nt,怎么一按f5就死机?我是用manual启动softice的。
    loadsymbol花屏主要是驱动的问题,以前也遇过,后来升级了版本,支持了我的新显卡后就没事了(而且竟然用哪个驱动都行?!!!)你用softice跟踪windows的dll看注册码?怎么可能!这个东东还是换用注册表监视程序来好。不然会死得很惨的。
      

  34.   

    对了,注册码是在写入注册表前就被算出来的,一定不在调用注册表api时,所以不要去看什么RegCreateKey什么的了。
      

  35.   

    嘿嘿……小弟只是想看看能不能那些crack程序是不是这么做的
    另外,我觉得在算注册码前程序肯定要先读注册表,因为注册码是根据用户名算出来的,所以只要跟踪到读用户名的地方,下一步一定就开算了。除非……那家伙变态,读完用户名再跳来跳去,有意让人晕。不过这些在将来做共享软件时一定要注意,说不定管用,嘿嘿……
      

  36.   

    用C写几行代码,你看汇编都会头昏的,除非你很清楚它的架构,嘿嘿~~你要做共享软件我一定出crack :)
      

  37.   

    呵呵……其实我就没打算要把那个算注册码的汇编代码搞清楚,我还没那么疯,我只是想把那段函数代码拷下来,加到一个简单的对话框程序里,不就成注册机了?可能是我想的太简单了。
    另外,如果你来crack我的共享软件,那你也真是太~~~~没品味了。小弟的程序还没被人crack就当掉了,所以你们crack起来会很麻烦的,嘿嘿……
      

  38.   

    oooOOOooo~~原来如此,你也算是另辟蹊径呀~~
    小弟不必担心,我除了出一个crack外,另送一个path,呵呵~~