|
|
PEDIY:打造myHiew
可能运气不太好? 再看看CreateThread的GetLastError()是多少! 当GlobalUnlock返回0时assert宏会把函数return掉,可能和这个有关系 等明天改下代码你再试试,现在要下了,没有电脑就是惨啊,只能在网吧上网 要是不小心玩过头回不了宿舍就只好露宿街头了.... |
|
|
PEDIY:打造myHiew
TO dssz: 原因知道了! 我把GlobalUnlock的返回值理解错了! 查了MSDN,其实GlobalUnlock返回FALSE当GetLastError==0时仍是成功 代码我明天改一下,应该能解决这个问题 TO Elvis: 现在的代码有点问题,我明天修改一下再下载 |
|
|
PEDIY:打造myHiew
非常非常感谢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 |
|
|
PEDIY:打造myHiew
to dssz: 谢谢兄弟的测试和建议,我会把123加进入 复制剪贴版的问题很奇怪,代码我是从MSDN里COPY的,只是加上了assert而已,而且在WIN98下试过没有问题 你调试的时候用OD加载,停在call GlobalUnlock这里,F8经过,然后OD的寄存器窗口里就会出现LastErr:********这一行,这个就是GetLastError()的值了 或者是在代码里加上对GetLastError()的调用也一样 |
|
|
修改myHiew(包括其中的一些BUG,11月30日更新)
非常非常感谢NoneName兄弟再次修改myHiew,我更新了原帖 跳转到后续标号那个问题太麻烦了,当然用NOP把SHORT JMP补成LONG JMP也是个办法 我的打算是干脆加个F9,跳出个对话框窗口来,里面加个EDIT,直接在EDIT里复制汇编代码 然后就可以先分析一边代码,再处理跳转,而且摆脱了HIEW单行汇编的限制做很多扩展都会比较方便 不过这个就还需要再分析HIEW,要知道单行汇编那个窗口怎么调用的才行 (reversing) 另外我编译的DLL怎么也是80K的? |
|
|
PEDIY:打造myHiew
to dssz: 谢谢兄弟的测试和建议 不过你的问题我一直没想明白是怎么回事,也可能是多线程同步的问题 (网吧的机器不会这样啊 你单步调试下看看GetLastError是多少,代码是这里: #define assert(a) if(!a){MsgOut("myHiew.dll Error:" #a " return FALSE");return 0;} BOOL InputClipData() { assert(OpenClipboard(NULL)); HANDLE hMem=GetClipboardData(CF_TEXT); assert(hMem); char*ptr=(char*)GlobalLock(hMem); assert(ptr); strcpy(cliptext,ptr); assert(GlobalUnlock(hMem));//那个红窗口就是这行出错导致的 assert(CloseClipboard()); CreateThread(NULL,0,KeyInput,cliptext,NULL,NULL); return 1; } to NoneName: 谢谢兄弟的测试和建议,明天就改! |
|
|
PEDIY:打造myHiew
to dssz: 谢谢兄弟的测试和建议 不过你的问题我一直没想明白是怎么回事,也可能是多线程同步的问题 (网吧的机器不会这样啊 你单步调试下看看GetLastError是多少,代码是这里: #define assert(a) if(!a){MsgOut("myHiew.dll Error:" #a " return FALSE");return 0;} BOOL InputClipData() { assert(OpenClipboard(NULL)); HANDLE hMem=GetClipboardData(CF_TEXT); assert(hMem); char*ptr=(char*)GlobalLock(hMem); assert(ptr); strcpy(cliptext,ptr); assert(GlobalUnlock(hMem));//那个红窗口都是这行出错导致的 assert(CloseClipboard()); CreateThread(NULL,0,KeyInput,cliptext,NULL,NULL); return 1; } to NoneName: 谢谢兄弟的测试和建议,明天就改! |
|
|
|
|
|
PEDIY:打造myHiew
最初由 dssz 发布 抱歉,我记错了,是wincon.h 里面包括与控制台有关的头文件定义 颜色定义是在144-151左右,不过只有很少的几种 就是 FOREGROUND_RED FOREGROUND_BLUE FOREGROUND_GREEN BACKGROUND_RED BACKGROUND_BLUE BACKGROUND_GREEN 可以异或来获得颜色 白色应该就是RED+BLUE+GREEN,不定义好像就是黑色 在VC里双击标示符,点右键,goto define/reference(好像是这个样子,记不清了),就可以跳到定义/引用的地方去 |
|
|
PEDIY:打造myHiew
标签是在汇编窗口里输入 deflb string 来定义的,这个伪指令把当前位置定义为名字=string的标签 然后就可以用valb ofslb这些前缀或者cinvoke/sinvoke或者@*标记来使用这个标签 按F11时可以查看当前已经定义的标签,可能你没有定义标签,所以什么也没有 文章的最后有一个用myHiew加密记事本的例子,有完整的代码,可以直接F12进去,那段程序要从Entry那里开始看 注意标签必须先定义才能使用,所以为了能直接F12,只好把标签标记的代码写在前面,而使用标签的代码写在后面 颜色可以在myHiew.cpp里修改,具体就是函数PrintLable的这两行: SetString(buf[line],80,str,FOREGROUND_RED); if(i==n)SetString(buf[line],80,str,FOREGROUND_RED|BACKGROUND_BLUE); FOREGROUND_RED是文字颜色,BACKGROUND_BLUE是背景 这些颜色是winconsole.h里预定义的 |
|
|
PEDIY:打造myHiew
又一个BUG:( 谢谢dssz的测试! 重新传了附件 再次麻烦删下附件bbs.pediy.com/upload/file/2004/11/myHiew.rar_175.rar,谢谢! |
|
|
PEDIY:打造myHiew
谢谢dssz 用dssz的DLL更新了附件 请管理员帮忙删除旧的附件,地址是 http://bbs.pediy.com/upload/file/2004/11/myHiew.rar_529.rar 和 http://bbs.pediy.com/upload/file/2004/11/myHiew.rar_614.rar |
|
|
PEDIY:打造myHiew
最初由 dssz 发布 发现一个严重的大BUG 处理va前缀时不小心把==写成=了。。。。。 -------------------------------------- addr=VAtoFixedOfs(addr,srcaddr); if(addr=0xFFFFFFFF)goto invalid;//导致总是invalid.... -------------------------------------- 在myHiew.cpp原代码里搜索if(addr=0xFFFFFFFF),把它替换成if(addr==0xFFFFFFFF)应该就会正常(一共有4处) 我现在在网吧,没有VC,明天到学校修补再重新上传 非常感谢兄弟的提醒! |
|
|
关于五代科技是骗子,五代科技的解释!!
最初由 sc5dai 发布 这个你就没说对了,我就是高3的时候学作外挂和破解的 而且在高3时独立做出了轩辕剑OL的脱机外挂 压力太重需要一个发泄口,这个时候反而技术提高的最快 所以高3的时间要珍惜,不拿来学Cracking太浪费了 |
|
|
|
|
|
PEDIY:打造myHiew
最初由 nbw 发布 不是研究底层的。。。那些操作控制台的方法是分析Hiew的过程中现学的。。。 刚学了Cracking一年,还是菜鸟。。。 |
|
|
|
|
|
VC编译问题
你选的是Win32 Console Application类型的工程 是控制台界面,所以必须要有main主函数(这个是在C的启动代码中调用的),你没定义这个函数,所以链接出错了 如果想编个WINDOWS,就应该选Win32 Application(要定义WinMain) |
|
|
我也把Asprotect 1.23RC4脱掉了,哈哈哈,太激动了!!
谢谢! 学会怎么用WinHex粘贴字符表示的十六进制数据了:D 不过...有中文的WinHex吗?(我的英语水平实在是....只能勉强过个2级....) |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值