能力值:
( LV2,RANK:10 )
|
-
-
1251 楼
感谢楼主 很有用
|
能力值:
( LV2,RANK:10 )
|
-
-
1252 楼
aaaaaaaaaaaaaaaaaaaa
|
能力值:
( LV2,RANK:10 )
|
-
-
1253 楼
学习!!!!!!!!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
1254 楼
十分感谢!入门真有非常有用!!希望能够学会!
|
能力值:
( LV2,RANK:10 )
|
-
-
1255 楼
很详细,支持一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
1256 楼
终于找到了,这个小软件
|
能力值:
( LV2,RANK:10 )
|
-
-
1257 楼
當然要來學學拉 OD 超有用的
|
能力值:
( LV2,RANK:10 )
|
-
-
1258 楼
现在看.还是给予掌声
|
能力值:
( LV2,RANK:10 )
|
-
-
1259 楼
虽然作为新手很难,但是努力看了很多次,一次一次对比后还是成功了
|
能力值:
( LV2,RANK:10 )
|
-
-
1260 楼
学习了 很好的一篇文章
|
能力值:
( LV3,RANK:20 )
|
-
-
1261 楼
本来想试着你想那个判断函数,结果看到了没见过的函数调用约定,使用了EAX,EDX。C语言里面木有这种函数调用约定,最后想着莫非不是用C写的,用PEID一看,果然不是,原来是Delphi的程序,网上查了下原来是register调用方式,从左到右,优先使用寄存器 (EAX , EDX , ECX) ,然后使用堆栈,是 Delphi 中的默认调用约定。
|
能力值:
( LV2,RANK:10 )
|
-
-
1262 楼
继续关注楼主的帖子。
|
能力值:
( LV2,RANK:10 )
|
-
-
1263 楼
謝謝大大的分享,我趕快來學習
|
能力值:
( LV2,RANK:10 )
|
-
-
1264 楼
好东西,继续。
|
能力值:
( LV2,RANK:10 )
|
-
-
1265 楼
顶起来
|
能力值:
( LV2,RANK:10 )
|
-
-
1266 楼
实在是太精彩了,非常感谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
1267 楼
这系列主题很不错,支持
|
能力值:
( LV2,RANK:10 )
|
-
-
1268 楼
現在RE技術是不是不熱門了?
|
能力值:
( LV2,RANK:10 )
|
-
-
1269 楼
不错的,学习了
|
能力值:
( LV2,RANK:10 )
|
-
-
1270 楼
楼主真好
|
能力值:
( LV2,RANK:10 )
|
-
-
1271 楼
支持支持支持支持支持
|
能力值:
( LV2,RANK:10 )
|
-
-
1272 楼
正在学习OD,好帖子,很详细
|
能力值:
( LV2,RANK:10 )
|
-
-
1273 楼
学习学习~~
|
能力值:
( LV2,RANK:10 )
|
-
-
1274 楼
非常棒, 正好可以学习下
|
能力值:
( LV2,RANK:10 )
|
-
-
1275 楼
00403B2F |. 89C6 MOV ESI,EAX ; 把EAX内我们输入的用户名送到 ESI
00403B31 |. 89D7 MOV EDI,EDX ; 把EDX内的数据“Registered User”送到EDI
00403B33 |. 39D0 CMP EAX,EDX ; 用“Registered User”和我们输入的用户名作比较
这断比较的是两个字符串的存储地址 ,如果地址相同,就表示是一个字符串, 不用下面的比较了,而不是楼主所注释的意思。因为EAX和EDX在存储的是字符串的地址。
00403B50 |. C1EA 02 SHR EDX,2 ; 用户名长度值右移2位,这里相当于长度除以4
00403B53 |. 74 26 JE SHORT CrackMe3.00403B7B ; 上面的指令及这条指令就是判断用户名长度最少不能低于4
这里主要将EDX做为计数器使用,因为在下文中
00403B55 |> 8B0E MOV ECX,DWORD PTR DS:[ESI]
00403B57 |. 8B1F MOV EBX,DWORD PTR DS:[EDI]
00403B59 |. 39D9 CMP ECX,EBX
ECX与EBX都是4个字节的寄存器,可以一次比较4个字节。所以EDX 除以 4 来计算要比较几次。
本人愚见,求探讨
|
|
|