首页
社区
课程
招聘
PEDIY:打造myHiew
发表于: 2004-11-7 14:43 56945

PEDIY:打造myHiew

2004-11-7 14:43
56945
收藏
免费 7
支持
分享
最新回复 (80)
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
51
非常非常感谢NoneName兄弟再次修改myHiew(今天运气不好,附件怎么传也传不上去,明天再更新好了)

原帖:http://bbs.pediy.com/showthread.php?s=&threadid=7600
-----------------------------------------------------------------------------------------------------------
一. 修改的BUG及增强的功能
    1.启用了作者不小心禁用的mov指令中的"*"功能,并使之可以用b,w,d等操作数类型来操作数据.
    2.胡乱修改了输入语句及操作指令等的缓冲区,使之足够大.
    3.为避免在计算时(此时汇编指令输入窗口未弹出)继续自动输入字符,加了一个简单的bLocked标志来进行线程同步.
    4.不需要再对您写的代码每行开头都加N个空格了.按下F12后,DLL会对输入的代码进行自动格式化,然后才自动输入汇编窗口.
    5.第4步里同时也修正了原版HIEW中" rep movsb"中(有前缀的空格)不能正确识别的问题.
    6.用户可以用前缀";"或"//"来添加表示注释的语句.

四.已知不足:
   1.对@,*的处理仍然不足.
   2.对跳转到后续标号的语句,可采用2次扫描技术来自动定位.但涉及到远近跳转字节数不一样的问题,打算先用NOP填充.
   3.原HIEW汇编输入窗口缓冲太小.
   本人没太多时间,以上BUG是在应用它改一个软件时发现的,现软件基本已经改完,也就基本不再继续改了(没时间).希望老大们再改:D

------------------------------------------------------------------------------------------------------------

NoneName修改的代码在//addby NoneName //modiby NoneName //delby NoneName 的注释之间

欢迎大家继续修改myHiew:D
2004-11-28 20:58
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
最初由 DonQuixote 发布
非常非常感谢NoneName兄弟再次修改myHiew(今天运气不好,附件怎么传也传不上去,明天再更新好了)

原帖:http://bbs.pediy.com/showthread.php?s=&threadid=7600
-----------------------------------------------------------------------------------------------------------
一. 修改的BUG及增强的功能
........


大哥在WIN98下测试F12功能正常吗?,我测试多次都不成功,现在把我在ME下测试的图片给大哥看看(OLLYDBG的图,是按F8过了那个GlobalUnlock函数的图片)

2004-11-28 23:16
0
雪    币: 242
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
53
强,收藏!!!
2004-11-29 09:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
强顶顶顶顶
2004-11-29 14:22
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
太强了!!!!!
2004-11-29 15:05
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
附件不能下载的吗?
2004-11-29 15:14
0
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
57
TO dssz:
原因知道了!
我把GlobalUnlock的返回值理解错了!
查了MSDN,其实GlobalUnlock返回FALSE当GetLastError==0时仍是成功
代码我明天改一下,应该能解决这个问题

TO Elvis:
现在的代码有点问题,我明天修改一下再下载
2004-11-29 21:28
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
最初由 DonQuixote 发布
TO dssz:
原因知道了!
我把GlobalUnlock的返回值理解错了!
查了MSDN,其实GlobalUnlock返回FALSE当GetLastError==0时仍是成功
代码我明天改一下,应该能解决这个问题
........


但现在主要问题不是这个GlobalUnlock,我强跳过检测GlobalUnlock后

主要问题在:  CreateThread(NULL,0,KeyInput,cliptext,NULL,NULL);

我这里创建线程失败,CreateThread返回0
为了方便说明问题,我把调试经过CreateThread后的图片放上来

2004-11-29 21:45
0
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
59
可能运气不太好?
再看看CreateThread的GetLastError()是多少!
当GlobalUnlock返回0时assert宏会把函数return掉,可能和这个有关系
等明天改下代码你再试试,现在要下了,没有电脑就是惨啊,只能在网吧上网
要是不小心玩过头回不了宿舍就只好露宿街头了....
2004-11-29 21:54
0
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
60
看到你加上的图了....
错误还是0,说明是和GlobalUnlock一样的问题,这个应该好处理,改下assert宏就行
2004-11-29 22:02
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
最初由 DonQuixote 发布
看到你加上的图了....
错误还是0,说明是和GlobalUnlock一样的问题,这个应该好处理,改下assert宏就行


但CreateThread并没有执行assert的宏,是不是应该和assert的宏没有关系呢?
2004-11-29 22:07
0
雪    币: 489
活跃值: (112)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
62
To dssz and DonQuixote:
   CreateThread的最后一个lpThreadId不要设置为空试试。
另外,Win9x下WinNT下对GUI和console集成/协调度不一样,NT系统要好一些。9x系统的console不能响应keybd_event。用PostMessage吧。创建线程前先GetForegroundWindow()。不过这样一样不知道如何用简便的方法找出所有键的扫描码值(不是ASCII码,呵呵),不知道有没有这样的函数。

   睡觉先。。。明天再聊。。。
2004-11-29 22:07
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
最初由 NoneName 发布
To dssz and DonQuixote:
CreateThread的最后一个lpThreadId不要设置为空试试。
另外,Win9x下WinNT下对GUI和console集成/协调度不一样,NT系统要好一些。9x系统的console不能响应keybd_event。用PostMessage吧。创建线程前先GetForegroundWindow()。不过这样一样不知道如何用简便的方法找出所有键的扫描码值(不是ASCII码,呵呵),不知道有没有这样的函数。

睡觉先。。。明天再聊。。。


lpThreadId我也曾经试过定义过的,但结果还是一样,我也估计问题是操作系统的问题。

但奇怪的问题是DonQuixote说他在WIN98下测试,没有问题的。

我在ME,98,下测试F12功能不成功,在XP的SP1系统下测试F12功能,一切正常。

        GlobalUnlock(hMem);              //因为返回0,所以去掉那个assert宏
        assert(CloseClipboard());
        GetForegroundWindow();                //获得前台窗口
        CreateThread(NULL,0,KeyInput,cliptext,NULL,NULL);//结果还是创建线程失败

2004-11-29 22:12
0
雪    币: 489
活跃值: (112)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
64
最初由 dssz 发布


lpThreadId我也曾经试过定义过的,但结果还是一样,我也估计问题是操作系统的问题。

但奇怪的问题是DonQuixote说他在WIN98下测试,没有问题的。
........

你理解错我的意思了.

现在问题已经解决,请下载.9X和NT通用.
附件:myHiew_noname.rar
2004-11-30 16:13
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
最初由 NoneName 发布

你理解错我的意思了.

现在问题已经解决,请下载.9X和NT通用.
附件:myHiew_noname.rar


经测试,在各个系统下都正常了!!!

非常非常非常感谢NoneName的修改!!!!
**************************************************************************
对于hview这个软件,现在功能的确已经很强了,但希望有能力的兄弟继续修改一下,增加一些常用的功能,我的建议如下:

1:要是能保存F11中的标签内容,下次再修改这个文件的时候可重新载入就更方便了,不用重新再设置标签了。(这个功能就象OLLYDBG中的断点保存保存功能一样),对于需要多次修改的程序,不用每次重复写标签很方便的。

2:在标签对话框中,现在有了删除标签功能,能否增加一个手工输入标签的功能呢,也就是说 在标签对话框中输入 deflb a1==0x401000,那么就能定义一个新的标签,不用每次去到那个地址才能设置

3:程序中虽然有了VA RVA的功能,但因为我们一般DIYPE的时候,都是先增加空白代码,然后知道空白代码在文件中的OFFSET地址
然后再在要修改的地址跳到空白代码的OFFSET地址中去的。

举例如下:
地址1: offset1: 5000  va1: 402000
地址2: offset2: 8000  va2: 406000

如我想在地址1(5000)跳到地址2(8000)中,那么我在地址1(5000)处输入: jmp 8000 因为根据文件地址差,
hview中只能跳到:va1+(0ffet2-0ffset1)=402000+(8000-5000)=405000(不是我想要的406000地址)

当然根据大哥的VA JMP 406000能跳到对准确的地址中去,但能否大哥增加一下功能 输入:ofs jmp 8000就能等效jmp va2 呢?

这样我们知道文件中绝对地址以后就能马上写入跳转,不用首先把OFFSET地址转换到VA地址,再用VA JMP 了

2004-11-30 17:11
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
还发现一点F12功能中新问题:

       ret 10
       deflb command
       mov eax,[ebp+10]----这行被翻译成mov eax,[ebp=10]
大哥有空再看看

2004-11-30 21:52
0
雪    币: 187
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
  超强,学习ing...
2004-11-30 22:27
0
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
68
谢谢NoneName的修改!

好象NoneName的代码MyInputKey里没有处理Shift的问题?我在网吧测试时也是不能处理"+"号

附件怎么传也传不上来:(
2004-12-1 12:51
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
最初由 DonQuixote 发布
谢谢NoneName的修改!

好象NoneName的代码MyInputKey里没有处理Shift的问题?我在网吧测试时也是不能处理"+"号

附件怎么传也传不上来:(


是不是附件的格式不对啊,

附件格式:gif jpg txt zip rar 限制: 512 K

编译后的程序很大,可分包上传,或删掉一些没有用的OBJ文件试试
2004-12-1 13:02
0
雪    币: 135
活跃值: (226)
能力值: ( LV12,RANK:330 )
在线值:
发帖
回帖
粉丝
70
327K的RAR 在网吧里传(非教育网)

运气太差了,传了N次都失败

昨天自行车还被小偷Crack了
2004-12-1 13:05
0
雪    币: 239
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
最初由 DonQuixote 发布
327K的RAR 在网吧里传(非教育网)

运气太差了,传了N次都失败

昨天自行车还被小偷Crack了


同感,我在大学的时候,一天里自行车被CRACK了2次。

上传的时候最好把原来的RAR删掉,不然两个RAR加起来就超过512K了

如不能上传,可把CCP的代码直接贴上来吧(暂时应急,等看雪大哥来了问问情况就知道是什么原因不能上传了。)
2004-12-1 13:08
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
很久没有到这么好的PEDIY文章了,感谢!!!
2004-12-2 21:04
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
最初由 DonQuixote 发布
327K的RAR 在网吧里传(非教育网)

运气太差了,传了N次都失败

昨天自行车还被小偷Crack了


hxxp://ezshare.de/files-en/126517/Springer.Verlag.Guide.to.Elliptic.Curve.Cryptography.eBook-kB.rar.html

这个网站可以上传单个20M的文件,而且不需要帐号,用来交流东西不错

老大如附件不能放到论坛上,可放到这个地方的
2004-12-3 20:06
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
希望各位老大能修复F12功能中的BUG,谢谢!!!
2004-12-5 19:31
0
雪    币: 489
活跃值: (112)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
75
主要是为DLL文件增加了一个输出函数KeyInput(主要是方便修改EXE文件用,为EXE增加了这个输入函数),把EXE文件中调用的检测键盘按键的函数定向到这个函数,模拟按键(没分析为什么,只是试验知道回车要模拟2次).就这么多.修改后在9x下面和2K下面应该一样快了(时间紧,没测试,不过还是为9x加了一个Sleep(100)),而且在F12后,可以自由切换窗口,不一定把它放在最前台.
下载看看吧.附件:myHiew_noname.rar
里面包含测试的代码和原版EXE,以及用FC比较2个EXE的结果.

很遗憾DonQuixote没有评上PEDIY奖:(
2004-12-28 10:24
0
游客
登录 | 注册 方可回帖
返回
//