营销型网站有哪些平台,做网站相关人员,北京网站改版有哪些好处,知名vi设计企业打开先有个NAG先给他去了 OD里面找到字符串#xff0c;跳转到对应代码处 在0042F786处下断#xff0c;运行#xff0c;断下后#xff0c;然后ctrlF9返回到call处 这个地方有点小坑#xff0c;用之前的jnz或者改cmp都不行#xff0c;这里会反复调用好几次#xff0c;有…打开先有个NAG先给他去了 OD里面找到字符串跳转到对应代码处 在0042F786处下断运行断下后然后ctrlF9返回到call处 这个地方有点小坑用之前的jnz或者改cmp都不行这里会反复调用好几次有时候是判断相同有时候是判断不同会引起内容报错但是程序还是可以正常用的。所以就换了种方法直接使用jmp这样强制跳接着将修改过的exe另存再重新打开这次就没有弹窗了。 打开新的程序需要破解的有两个一个是用户名加序列号另外一个是序列号 先来序列号的吧看看样子 搜索字符串 找到了对应分支改je试试 可以了但是这里还是写注册机还原汇编后继续往上看 这里没有看到明显的cmp之类的比较大概率是最后一个call引起的标志位的改变不过这里可以在最上面下断然后追一下数值看看。 上面的call里面也有很多test这里的字符应该就这个固定字符串Hello Dude!了 ok再进行下一个看用户名和序列号的。 找到对应的代码处 这里是用来判断用户名长度是否大于等于4的直接过然后又回到了之前单序列号的判断流程上来了 分析写在注释里面了同时可以结合栈里面的情况知道序列号组成由固定的CW-开头接着由用户名算出来的key最后一部分是固定的-CRACKED。 而算法也很简单用户名的第一位数转成ascii码先乘以0x29再翻倍写出注册机
#include iostream
#include string
#include cstdintint main() {std::string username;// 获取用户名输入std::cout 用户名: ;std::getline(std::cin, username);if (username.length() 4) {int key (username[0] * 0x29) * 2;printf(序列号是CW-%d-CRACKED,key);}else {printf(用户名长度应该大于3);}return 0;
}搞定其实算法也只取了用户名的首位