|
[求助]并口软件狗如何读取
找开发套件,里面就会有软件狗存储内容读取和写入工具,不过一般需要知道存取密码。需要熟悉软件狗API,当然,还需要会用OD调试。 如果介事对你很重要,可以考虑掏腰包买一套同型号软件狗开发套件,费用也就刚刚超过2位数而已。 |
|
各位老大,ollydbg保存修改的时候除了问题
你修改的代码中包含了重定位信息,就像这样: 0044E960 68 38CF4800 push 0048CF38 0044E965 B8 38CF4800 mov eax, 0048CF38 0044E96A A1 38CF4800 mov eax, dword ptr [48CF38] 这三条指令有一个共同特点,操作数都包含有内存绝对地址。修改代码的时候,如果触及到作为操作数的内存绝对地址,保存文件的时候就会有警告,提醒你下一次程序加载,或在其它机器上加载的时候,你修改的代码内容可能不能保持你修改后的样子,可能会因此给程序运行带来不确定性。所以,最好能避开对这类代码的修改,解决途径当然是多用跳转指令了。 |
|
[原创]再见,看雪论坛,这一次是永远!
难道非要搞掉EMail才能忘记登录密码,能被动到这个地步也是有境界的表现! |
|
[求助]c语言之后
学习专业户,读书有瘾,神人啊! |
|
请问这样的代码是什么?VM?
楼主根据什么判断是VM,假如真的是VM,那么会有很强的反调试,不会让你如此轻松跟踪。再说,如果是虚拟机引擎,应该通过switch...case判断操作指令,然后执行相应的指令块。顺便给你泼点冷水,玩破解一定是独行侠,做别人没有做过的,想别人没有想到的,感觉你没有很强烈的内在动力,没有足够的信心和勇气,也缺少起码的经验,至少目前还不适合做破解。 |
|
请问这样的代码是什么?VM?
楼主的概念有误,你标出的代码基本上都不是花指令,所谓花指令一定是通过跳转指令和垃圾指令配合达到扰乱反汇编代码的效果。而在花指令体系中,垃圾指令一定是不会被执行的指令。 |
|
[求助]Sentinel Pro狗的功能全靠lic来授权!
如果没有猜错,应该是FLEXlm保护,Sentinel SuperPro的作用仅仅是代替网卡为license 提供了一个hostid而已。 |
|
有关RAR破解,随便问问。
孔子说“不耻下问”,楼主说“随便问问”,很有修养啊! |
|
[求助]是系统崩溃了还是我崩溃了?
来个mm给诊断诊断。 |
|
[下载]OllyDbg 2.01
这个应该算是 OllyDBG v2.0 系列的第一个正式版了吧? |
|
[原创]有一天,我爱上了Linux。
大侠介似在逗我们玩呢?Linux平台固然有优势,但是,大众化的软件应用能比得上Windows吗,再说,Linux的操作系统能让你玩弄于股掌之中吗? |
|
[下载]embarcadero.Architect.2010-XE5.Keymaker-CORE 1.5.rar
查过了,只有3个。 xe2 update3 xe3 update1 xe4 update1 |
|
关于花指令的问题
CPU 对指令的执行在没有跳转指令的情况下会严格按照由前向后逐条按顺序进行,遇到跳转指令这个顺序会被打乱。所以,由前向后是指令的逻辑顺序,而在跳转指令的作用下,这个顺序会被打乱,于是,就有了执行顺序。 反汇编对代码的解析也是按照由前往后的顺序进行的,一条指令的解析结果直接影响到后续指令的解析,花指令就是利用了这个特点,让垃圾指令和跳转指令配合达到混淆后续操作码、操作数,从而干扰静态分析代码的目的。 现举例说明: 【代码1】: 00406760 E8 01000000 call 00406766 00406765 90 nop 00406766 83C4 04 add esp, 4 00406769 8B83 2C030000 mov eax, dword ptr [ebx+32C] 0040676F |. E8 14F70800 call 00495E88 00406774 |. 8D45 B0 lea eax, dword ptr [ebp-50] 00406777 |. 8B00 mov eax, dword ptr [eax] 00406779 |. 33D2 xor edx, edx 【代码2】: 00406760 E8 01000000 call 00406766 00406765 E8 83C4048B call 8B452BED 0040676A |? 832C03 00 sub dword ptr [ebx+eax], 0 0040676E |? 00E8 add al, ch 00406770 |? 14 F7 adc al, 0F7 00406772 |? 0800 or byte ptr [eax], al 00406774 |. 8D45 B0 lea eax, dword ptr [ebp-50] 00406777 |. 8B00 mov eax, dword ptr [eax] 00406779 |. 33D2 xor edx, edx 【代码1】是正常反汇编的结果,【代码2】是加入了花指令干扰的结果。可以看到,由于在内存地址 00406765 加入了垃圾指令 e8 从而导致从这一地址开始,一直到 00406774 地址处的一系列指令错乱。其原因很简单,因为垃圾指令 e8 是 5 字节指令,反汇编器会把 e8 后续的4个字节作为操作数对待,然后继续解析后续指令,从而造成了一系列操作码、操作数错位,使反汇编结果出现混乱。由于 e8 的前一条指令具有无条件跳转性质,恰好跳过了这个指令,所以,这个 e8 指令永远都没有机会被执行。 与反汇编器相比,CPU 不需要逐条对指令进行反汇编,只需要解析和执行当前指令,定位和解析、加载下一条指令,不执行的指令根本不予理会,因而花指令的存在丝毫不会影响到CPU对指令的正确加载与执行。 00406760 E8 01000000 call 00406766 00406765 E8 83C4048B call 8B452BED CPU 在执行 00406760 处的指令时,会将其调用地址 00406766 处的指令作为下一条指令加载和执行,然后,会按顺序继续加载 00406769、0040676F、00406774 处的指令继续执行,而不会像在反汇编器中呈现的那样,好像要按顺序执行后续的 00406765 、0040676A 、0040676E 等处的指令。 所以,CPU 永远都能找到正确的下一条指令,永远不会犯错,会犯错的只能是反汇编器,因为它还不是足够聪明,搞不清楚哪些是用来执行的指令,哪些是用来捣乱的指令,因而表现比较笨拙和被动。 【代码1】和【代码2】虽然在形式上存在着很大的不同,但是,两段代码执行的指令内容及指令顺序完全相同,不存在任何区别,由此我们得出结论,反汇编得到的代码并不一定就是CPU实际要执行的代码,对于存在花指令的程序,尤其如此。 |
|
关于花指令的问题
no,由于PC的指令编码长度是可变的,所以,在反汇编的时候,就存在着指令切分的问题。如果切分不正确,则得到的指令就会不正确。所有的花指令都和跳转有关系,正常情况下,跳转指令落脚的位置,应该恰好就是指令边界,这样,反汇编时的指令切分就不会有问题。而如果加入无效指令,对反汇编器的指令切分加以干扰,让跳转指令看上去没有落脚在指令边界上,结果,你就无法看到跳转后的下一条指令。而这些,仅仅能迷惑人和反汇编器,对CPU却毫无影响,因为CPU是按执行顺序而不是逻辑顺序来解析指令的,因此,总是能正确地加载和执行每一条指令。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值