|
[原创]od条件断点,createfile读指定文件名??
看了一下OD的帮助,发现可以直接比较字符串。。。至于ZF怎么弄,我就不太清楚了,不过一般来说用到ZF的地方,后面都跟有 JNZ,JZ等等的语句,为什么不在你想要断下来的分支入口下断呢? |
|
[求助]汇编中的AND指令
EAX是一个32位数,从右到左可以标成0到31位,第n位代表2的n次方,比如数字7的最后4位是0111,就是0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 0 + 4 + 2 + 1 = 7,从这里可以看出,第2位以及第二位以上的每一位都是4的倍数,所以只有第0位和第一位决定余数。这里AND EAX,3就是你理解的“屏蔽”掉后面的所有位,而只留下第0位和第一位。 AND EAX,3 的结果可能是0,1,2或者3,它实现了EAX%4。而switch的实现是通过跳转的地址表实现的,EDI指向地址表的开始,EAX可以看作这个表的元素的偏移。比如表里存的数值如下 004: 30 005: 50 006: 70 007: 90 edi开始被赋值为004,如果EAX%4==2,那么003这句里面 EAX+EDI 就是 2+004 = 006,[006]的值是 70,结果就是 JMP 70,而地址70对应的就是 case 2 的代码。 |
|
[求助]那位高手来帮帮忙~~~~~~~~~~在线等候
换一换顺序不行么?除了第一句必须在最后一句前面?其余的位置可以随便换吧? |
|
[原创]od条件断点,createfile读指定文件名??
判断参数,在CreateFileA下条件断点,此时 [esp+4]就是第一个参数,也就是指向文件名 [[esp+4]]文件名字符串的前4个字符组成的DWORD,也就是说一次只能比较4个字符 [[esp+4]+4]是接下来的4个字符组成的DWORD [[esp+4]+8]是再接下来的4个字符组成的DWORD,依此类推 比如说你读取文件有 C:/folderA/data1.txt C:/folderA/data2.txt 因为前面的路径都一样,可以只比较最有特色的部分,比如“ata1”和“ata2”,假如我们想断在第二个文件,ASCII如下: a t a 2 61 74 61 32 写成DWORD就是0x32617461 那么条件可以写成[[esp+4]+12]==0x32617461 |
|
我用1.65中文版的ODbgScript插件,问一下要编写代码的话,用哪一个软件,最新版是多少的?
OSCEditor v1.0 beta 2 http://www.pediy.com/tools/Debuggers.htm 其实,记事本就可以写。。。 |
|
问问大侠门
这个应该不属于软件调试和逆向方面了。破解注册码容易是因为所有的代码都是在自己电脑上执行的,每一步都看得到,只是要花时间分析而已。你这个数据全在服务器上,属于网络入侵了,在这里问不合适。 |
|
[求助]mov word ptr dword_1044C, 80h ;mov word ptr dword_1044C+2, 4,在C中怎么写
*((int *)0x1044c)=0x40080; |
|
|
|
[求助]怎么回事?修改user32.dll范围的内存,竟然不行
系统把user32.dll的内容映射到某一个进程之后,就是这个进程的内容了,你在内存里面改了,只对这个进程有效。你又没有保存到文件,下次重新启动,又重新映射,当然就没效果了。 |
|
|
|
|
|
.net 千年难题 破解高手进来
我用的就是2.0的那个ilasm.exe,只要能反汇编就行了,选中菜单中的View>Show Bytes,察看你要改的那一行 IL_002a: /* 2D | 13 */ brtrue.s IL_003f 然后察看上下几句的bytes,直接在UltraEdit32里面查找,改成2C 13就行了,对应的代码就是 IL_002a: /* 2C | 13 */ brfalse.s IL_003f 不过最近发现一个更好的办法,在资源版发现这个工具,可以直接修改代码 http://simpledotnet.googlepages.com/simpleassemblyexplorer |
|
[求助]OD的使用问题
这个是把占较多字节的指令改成较短字节的指令时才能体现出来的,比如你把一个5字节的jmp指令改成一个字节的push eax,如果你选了用nop填充,剩下的4个字节就是nop,否则不变。这里你的je变成jmp,指令长度不变,选不选用nop填充效果都一样。 |
|
|
|
[求助]请教 .NET程序如何PATCH
strEncrypt = AtapiDevice.GetHddInfo(0).SerialNumber; return (StringType.StrCmp(str2, ShrinkRegID(Cls_Common.Encrypt(strEncrypt, "sanle@163.com")), false) == 0); 改这两句可以吗?这个不是典型的 if (注册码==Hash(序列号)),查找所有的AtapiDevice.GetHddInfo(0).SerialNumber; 看看那里用到了,修改一下就可以了吧? |
|
[求助]帮我看看这个加密算法啊?
简单分析了一下,不知道对不对对。 红色部分: BYTE seed1=? //第一次004C43AA时AL的值 BYTE LookupTable[256]; //offset 0058F750 //这里packet[]为BYTE数组 for (int i=0; i<packet_length; i++) { packet[i] = LookupTable[packet[i]+seed1]; seed1 += 3; } 蓝色部分: DWORD seed2=? //004C44EF时ECX的值 DWORD dwHigh; DWORD dwLow; //以下packet[]为DWORD数组 for (int i=0; i<??; i++) //循环次数为004C44EF时EDX的值 { packet[i] ^= seed2; dwLow = (((packet[i] & 0x0FFFF) * 0x3ADCF + 0x26A6ED) >> 16) & 0x0FFFF; dwHigh = (((packet[i] >> 16) & 0x0FFFF) * 0x3ADCF + 0x26A6ED) & 0xFFFF0000; seed2 = (dwHigh | dwLow) ^ 0xA55AA55A; } |
|
[求助]这个软件的注册方法,请指教
先用DeDe看一下,一眼就看那个注册的Form了,看看里面有哪些函数,有名字的好像没什么用,没关系,看看那几个没名字的,前几个好像是做乘法,就模运算,弹出MessageBox和读写注册表的。估计就是这几个函数啦,打开OD,F9运行程序,再将这几个可疑的函数地址都下断点,输入12345678,点击注册,然后就断下来了,稍微分析一下就可以了。 |
|
[求助]这个软件的注册方法,请指教
注册算法在004A0E30,就是输入的字符串转换成整数(以下描述均为10进制),必须是1840的倍数,而且不能是1840,18400和338560000。 |
|
[求助]請問各位高手怎麼幫幫忙!脫殼後出現Runtime Error R6002 Floating point not loaded
这个不就是腾迅活动的那个第三题么。具体解释看这里 http://bbs.pediy.com/forumdisplay.php?f=120&tcatid=111 不过用OD dump出来的直接就是2个section,一个是.text, 一个是.rsrc,如果用ImportREC修复有可能多一个section。程序才初始化的时候会检查RAV=00289240所在的section的属性是否为可写。如果可写,就跳过这一段的初始化,所以会出问题。而这个地方位于第一个节.text,如果改成不可写,程序可能连载入都不行。也许可以修改section header,把.text细分一下,多加一个.rdata并改一下属性,也许可以。但是我不太会,所以我直接改的程序流程,让他强行初始化。 打开程序以后,Ctrl+F查找push 00400000,用Ctrl+L查找下一个,一共有3个,最后一个是要改的地方,先下个断点,那里就是察看section是否可写的,等返回之后,把下面的je这句nop掉,就可以了。
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值