能力值:
(RANK:215 )
26 楼
这个要期待下.
能力值:
( LV2,RANK:10 )
27 楼
欢迎,留有原作者信息和出处即可。
能力值:
( LV3,RANK:20 )
28 楼
还差一个ansi的判断函数,写好后就基本可以让od2.01完美支持中文字符查找了。
但好像不是很好判断。
能力值:
( LV2,RANK:10 )
29 楼
很期待
能力值:
( LV2,RANK:10 )
30 楼
插件选项是灰色的,咋办?
能力值:
( LV2,RANK:10 )
31 楼
好办,到 ollydbg.ini 里设置一下 插件的相对路径或绝对路径一下,神奇立马出现。
能力值:
( LV6,RANK:93 )
32 楼
简单测试了下,貌似OD2自身的字符串查找,不能搜索到LEA指令带字符串的
update:
找到需要patch地方了,
004A3360 |. F640 01 02 |||TEST BYTE PTR DS:[EAX+0x1],0x2 ; OP_CONST, lea是OP_MEMORY
004A3364 |. 74 54 |||JE SHORT ollydbg.004A33BA
下面这些patch后,基本可以显示正常了,不过有些patch需进一步改进
HMODULE hMain = GetModuleHandle(NULL);
org_IsTextA = (ISTEXTA)GetProcAddress(hMain, "_IstextA");
hook(&(PVOID&)org_IsTextA, hook_IsTextA);
org_IsTextW = (ISTEXTW)GetProcAddress(hMain, "_IstextW");
hook(&(PVOID&)org_IsTextW, hook_IsTextW);
org_Asciitounicode = (ASCIITOUNICODE)GetProcAddress(hMain, "_Asciitounicode");
hook(&(PVOID&)org_Asciitounicode, hook_Asciitounicode);
org_Utftounicode = (UTFTOUNICODE)GetProcAddress(hMain, "_Utftounicode");
hook(&(PVOID&)org_Utftounicode, hook_Utftounicode);
能力值:
(RANK:215 )
33 楼
期待继续完善。辛苦了。
能力值:
( LV3,RANK:20 )
34 楼
[QUOTE=lynnux;1238802]简单测试了下,貌似OD2自身的字符串查找,不能搜索到LEA指令带字符串的
update:
找到需要patch地方了,
004A3360 |. F640 01 02 |||TEST BYTE PTR DS:[EAX+0x1],0x2 ; OP_CONST, lea是OP_M...[/QUOTE]
想问一下你这个代码怎么patch上去?
今天继续瞎搞,感觉好多了,已经接近想要的结果。
但是现在有个问题,就是改的代码实在太多了,没办法保存。
居然还有重定位,明天再看看补丁的代码。
看来只能添加字节,这个没弄过,找找资料先。
还有一个问题就是MultiByteToWideChar的调用问题。
上传的附件:
能力值:
( LV6,RANK:93 )
35 楼
手段很多,但是要根据上下文,主要是结合SDK的disasm.h看,就可以弄清楚它是怎么处理的了。
我都是用代码patch,UNICODE显示最简单,甚至无需patch,直接设置"Use IsTextUnicode"就可以正常显示,但如果这样做会多出来一些乱码的UNICODE,所以放弃该方案,直接hook _IstextW,该函数的处理直接从52中文搜索的代码里抠出来用即可。
再就是ASCII码处理,这个稍微复杂了些,原本是hook _IstextA,但是后来测试发现诸多问题,放弃了,直接hook _Isstring可以达到效果。
上面两个处理了搜索基本就没问题了,再有就是数据窗口的显示问题了,设置里有相关选项,就是“Code page for ASCII dumps”和“ode page for multibyte dumps”,界面设置里没有中文的,只能手动打开ollydbg.ini设置为936,这样数据窗口可以显示出来中文,不过ASCII的中文显示有问题,只能切换到UTF那页才能正常实现ASCII码的中文,UNICODE的实现没问题。
patch的代码在https://github.com/lynnux/holyshit/blob/master/common/OD2str.cpp里,不过有很多多余的功能函数
能力值:
( LV3,RANK:20 )
36 楼
将你的修改共享出来看看!也许能少走很多弯路。实在不懂什么就代码patch。
能力值:
( LV6,RANK:93 )
37 楼
OD 中文搜索插件 不会更新了,那个写得太乱
。本来想集成到holyshit中去的,代码都写了大半了https://github.com/lynnux/holyshit/blob/master/common/ustrref.cpp,后来又研究了下OD自身的搜索处理,发现原理基本一致就没必要重复造轮子了。
OD2自带的搜索挺好的,就是中文处理差了点。不过那个中文搜索插件说支持VB,OD好像没这个处理,不过OD自带的搜索可以搜索出非push mov lea的指令带字符串的。
能力值:
( LV6,RANK:93 )
38 楼
实际上就是弄清楚它的搜索字符串流程以及相关函数是怎样用的
关键函数就是_Isstring,这个函数是去读指定地址,如果是字符串就返回UNICODE字符串(写入到buf),但是如果是中文ASCII,它是读不出来的,原因就是没考虑到中文的ASCII是占两个字节,原本我是处理_IstextA函数,但是有问题,后来干脆直接处理_Isstring,如果它没读取到字符串,就判断下是不是ASCII中文,是的话自己转换成UNICODE写入到_Isstring的buf参数中。这样ASCII码的问题就解决了
UNICODE不说了,是_IstextW的问题,直接把该函数替换成直接中文的函数就行了。
能力值:
( LV3,RANK:20 )
39 楼
终于知道怎么会有重定位了,原来是我使用的指定内存来存一些标志。
看了一下重定位原理,明天继续折腾去。
能力值:
( LV3,RANK:20 )
40 楼
测试了一下holyshit的中文搜索功能,好像还是有些不尽人意,随便共享我的最新修改。
注意:不能与holyshit_test共用,因为他修改的代码跟我的不一样。
测试文件:
试用.rar
以下是效果比较:
holyshit_test的效果
4楼里的asm程序holyshit_test插件也不能很好显示
od1.1里面的字符插件的效果
以下是本人最新的结果
以下是od2.01最新修改
ollydbgnew.rar
还差一个ascii转unicode的函数就可以了,正在想办法。
上传的附件:
能力值:
( LV2,RANK:10 )
41 楼
等待两大牛的完美解决版。
能力值:
( LV3,RANK:20 )
42 楼
已经很接近可用了,但还是有问题,大文件好像会崩溃
而且非字符串还是有很多,明天接着干。
最新的修改:
ollydbg.rar
上传的附件:
能力值:
(RANK:215 )
43 楼
两位多交流下,等你们的好消息,辛苦了。
能力值:
( LV3,RANK:20 )
44 楼
LEA指令带字符串的程序谁能写一个?
我想测试一下。
能力值:
( LV6,RANK:93 )
45 楼
找个程序搜索下字符串,然后记下字符串地址xxx用OD该成lea eax,[xxx]什么的
能力值:
( LV2,RANK:10 )
46 楼
期待完美,两位牛人辛苦了,精神上支持一下!
能力值:
( LV2,RANK:10 )
47 楼
支持了,先下载试用一下
能力值:
( LV3,RANK:20 )
48 楼
发现崩溃居然是WideCharToMultiByte,好像处理的字符不能超过174个,往上改很容易出错,其实微软的做法好像是逐个字符处理的,想到基本有用的字符也不会超过这个数,所以就不折腾了。明天再处理一些比较奇葩的字符。就算完美处理完这个中文字符查找问题了,发现od2.01处理中文真的很有问题。
vb测试很完美!
明天再过滤掉一些比较奇葩的字符串
最新修改:
ollydbg.rar
有问题请跟帖,最好附上测试程序。谢谢
发现修改
0040EA35 mov dword ptr [0x58267C], 0x5
为
0040EA35 mov dword ptr [0x58267C], 0x0
可以让界面字体更好看,下次再一起修改。
上传的附件:
能力值:
( LV3,RANK:20 )
49 楼
能力值:
( LV3,RANK:20 )
50 楼
已经解决绝大多数汉字搜索问题,还有问题就是utf的处理问题
像“壹拾”,od2.01会将其认为utf,明天再继续修改!
现在支持繁体!繁体需要设置代码页
下面看看e语音的程序的效果
od1.1+52插件
od2.01修改的效果
下面是最新修改
ollydbg new.rar
上传的附件: