首页
社区
课程
招聘
[旧帖] [原创]关于OD找不到字符串的解决方法 0.00雪花
2013-7-6 19:02 10996

[旧帖] [原创]关于OD找不到字符串的解决方法 0.00雪花

2013-7-6 19:02
10996
嘿嘿。。。
在没有加壳没有加花指令的情况下,有时候OD中的字符串搜索插件无法获取到
试试下面方法吧
————————————————————————————————
1.通过转换代码在执行时候释放。。
这个确实没办法找字符串。。但是。。。
释放代码的地方却很容易跟到。。。
因为是循环步骤。。且多次调用。。
————————————————————————————————
2.可以尝试搜索二进制。。。Ctrl+B在内存中查找ASCII
————————————————————————————————
3.早起版本的中文搜索引擎有强制模式。。记得打开。。最新版本是默认开启
————————————————————————————————
4.有时候。。看到的不一定是真的。。。有可能只是一张文字图片
————————————————————————————————
5.有时候还可能是上面覆盖透明遮罩。。。可以用SPY工具检测。。。
————————————————————————————————
6.在可发现的字符串使用立即数跟随。。。有时候就会有收获滴。。。
————————————————————————————————
7.字符串一般可以在内存中看到。。。试试看 bp GetWindowText(A)
————————————————————————————————
8.在制作CrackMe 的时候我在想怎么不用算法隐藏字符串。。。
很遗憾。。我有点笨没想到。。。
但是,我想到代替的方法
不知可行否。。。。
如果失败和成功两个文本都在一起。。
需要谁先谁后。。。假设成功在先
就覆盖了。。。
那我们可以用程序先移到看不到的地方。。
当程序校验正确时候在复位。。。
看起来也像提示成功。。。(虽然只是移位置)

————————————————————————————————

嗯。。差不多就这样。。。
如果有疏忽请各位大神指教。。

看看可不可以加个分啊。。转个正啊。。
2010年注册的。。到现在还是临时会员。。。

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞3
打赏
分享
最新回复 (20)
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jxrbwwp 2013-7-6 20:42
2
0
我也是很早就注册,一直没有转正
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-6 23:18
3
0
好吧。。。看日期貌似是2013年4月注册的。。。还是这个是马甲?
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
灵魂出窍 2013-7-7 09:54
4
0
哈哈 都是同道中人啊
雪    币: 29414
活跃值: (18620)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2013-7-7 10:01
5
0
学习分享的态度很重要,邀请码只是个形式。
己补促了你的kx,可以自行购买邀请码转正了。
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bypeng 2013-7-9 21:31
6
0
一般都是Ctrl+B内存中查找 然后找不着就没办法了 哈哈
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-9 22:12
7
0
版主,也给我补点吧,在求助问答回答东西,他们都不结贴啊!楼主自从提问就消失了!

本贴楼主的问题,得到字符串问题其实现在很多软件不用ascii,od的插件只扫描字符串段(code段和bss全局段之间),很多人把字符串内容放到了资源中,我感觉如果为了破解软件的话,去看字符串不是好方法(不过是高效的方法),使用button,edit,timer等动动,拦截消息还是比较快点bp TranslateMessage   ……getmessage
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-9 22:33
8
0
本人不才,但虚心学习,那如果字符串放在资源咋整啊。。
能说说方法不。。。。
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 08:28
9
0
其实呢,如果只是为了防止别人查看字符串,可以把文本放到lib文件中,或者创建个文件,将字节 x 2的形式存放(也就是为了加密,也过大于 乘结果大于FF就不做处理,反之),或者放到dll文件中,动态读取,方法很多,个人感觉通过字符串破解不是太好的方法,我喜欢放一个label控件,将所有内容放到里面,然后以行的形式读取(放label控件方便),这样,字符串内容并不在字符串段,   
个人的一点烂方法,不知道搬的上台不!
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-10 12:14
10
0
谢谢楼上指导。。。再问一个问题~~~如果放在label在内存中可以搜索得到怎么办呢?
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sirofkx 2013-7-10 15:18
11
0
程序断在了MessageBox函数上,堆栈里有两个字符地址。奇怪,一个上面有数据跟随的选项(对话框中的汉字),一个没有数据跟随的选项(对话框标题上的汉字)给我指点指点。我想修改对话框标题上的字。
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 16:23
12
0
替换字符串指针即可!
push [ebp + 14]
push [ebp + 0x10] ///"Caption"
push [ebp + 0xc] ///"Text"
push [ebp + 0x8]
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 16:33
13
0
使用label的话字符串得到的指针使用栈地址保存,使用ce应该是搜索不到的!(有方法可以说说) 下面是我自己写的一个用label读取的!

我自己看的情况是,内容并不在字符串区,内容也是动态读取的!使用插件搜索不到!

Memory map, item 36
Address=00D50000
Size=00004000 (16384.)
Owner=         00D50000 (itself)
Section=
Type=Priv 00021004
Access=RW
Initial access=

Stack ss:[0012F5F0]=00D52614, (ASCII "Label1")
eax=00000006

0044F0C8  /.  55            push    ebp
0044F0C9  |.  8BEC          mov     ebp, esp
0044F0CB  |.  6A 00         push    0x0
0044F0CD  |.  53            push    ebx
0044F0CE  |.  8BD8          mov     ebx, eax
0044F0D0  |.  33C0          xor     eax, eax
0044F0D2  |.  55            push    ebp
0044F0D3  |.  68 19F14400   push    0044F119
0044F0D8  |.  64:FF30       push    dword ptr fs:[eax]
0044F0DB  |.  64:8920       mov     dword ptr fs:[eax], esp
0044F0DE  |.  6A 00         push    0x0
0044F0E0  |.  68 24F14400   push    0044F124
0044F0E5  |.  8D55 FC       lea     edx, dword ptr [ebp-0x4]
0044F0E8  |.  8B83 F8020000 mov     eax, dword ptr [ebx+0x2F8]
0044F0EE  |.  E8 75F0FDFF   call    0042E168
0044F0F3  |.  8B45 FC       mov     eax, dword ptr [ebp-0x4]
0044F0F6  |.  E8 A555FBFF   call    004046A0
0044F0FB  |.  50            push    eax                              ; |Text
0044F0FC  |.  6A 00         push    0x0                              ; |hOwner = NULL
0044F0FE  |.  E8 5178FBFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
0044F103  |.  33C0          xor     eax, eax
0044F105  |.  5A            pop     edx
0044F106  |.  59            pop     ecx
0044F107  |.  59            pop     ecx
0044F108  |.  64:8910       mov     dword ptr fs:[eax], edx
0044F10B  |.  68 20F14400   push    0044F120
0044F110  |>  8D45 FC       lea     eax, dword ptr [ebp-0x4]
0044F113  |.  E8 C850FBFF   call    004041E0
0044F118  \.  C3            retn


信息框的标题是 NULL,内容是Label
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-10 16:36
14
0
刚刚测试标签可以用ctrl+b在堆栈窗口中找到。。。。

…………不知道是不是我找的例子不正确
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 16:48
15
0
在控件存放初始内容区确实可以搜索的到!

加密存储?好像很麻烦的样子! 还是用lib或者调用文件加密存储好了!先将所有要处理的文本加密写到一个文件!  主程序内解密调用! 更新的话也会方便很多!
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-10 16:54
16
0
嗯。。。就是算法有点麻烦。。。
举个例子:
http://bbs.pediy.com/showthread.php?t=174796
的4楼。。。

这个CrackMe就是类似东东。。
中文拆分开存放。。。
读取是一个个读取。。。
最纠结的就是这个。。。。
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 17:20
17
0
还是找一个强壳吓唬吓唬人得了!
或者找一个好点的算法调用也不麻烦!
一般大神们看不到字符串直接就另走其他路了,不可能一直来通过字符串......
如果只是为了破解一个控件事件,拦截消息是最好的!
雪    币: 16
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rone 2013-7-10 18:02
18
0
嗯。。。加强壳是通用方式。。。。
但是。我只是想通过自己能力达到加密解密
雪    币: 19
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MarvelStu 2013-7-10 22:56
19
0
检测断点,hook  dbgbreakpoint gbgxxx xxxxxxx 一堆函数,修改默认dll加载标,少用通用函数(别人猜的到的),关键函数在线程中处理然后kill,vmp加花,乱七八糟一大堆,反正让软件的执行速度降下来,那么加密就做的“牛”了!

个人感觉,稍微做点措施就可以了,可以防止普通人破解即可,大神不好防!
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
知乐君子 2013-11-5 12:01
20
0
明天看能不能转正,嘻嘻
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
陈志忠 2013-12-5 12:51
21
0
我还不是一样。。
游客
登录 | 注册 方可回帖
返回