大家觉得杀戮空间2爆破手六连杀和1V8哪个含金量最大

你的偶像正在直播中,
可用的推荐票
流痕暑假巨作:9A91爆破7连杀。1V8。
礼物加载异常,请点击重试
礼物正在加载中,请稍后......
加载失败,请点击重试
(错误代码:001)
登录后查看你的排名
我未上榜╮(╯▽╰)╭
最佳战绩:
本视频还没有人送礼╮(╯▽╰)╭
有钱任性,赏TA一个礼物呗~
加载失败,请点击重试
(错误代码:001)
0人正在看,条弹幕
本作品还没有弹幕╮(╯▽╰)╭
等你来一发!
加载失败,请点击重试
(错误代码:001)
投推荐票最多的观众
送礼值最高的观众
加载异常,请点击重试
(错误代码:005)
同专辑作品
作者更多作品
我来说两句...
现在还没有评论哦~快来抢沙发!
加载异常,请刷新重试
王者荣耀星耀榜&&排名&第50名
加载异常,请点击重试
(错误代码:005)
视频作者排行
新的一周开始啦,速来打榜赢福利!
加载失败,请点击重试
(错误代码:001)
加载失败,请点击重试
(错误代码:001)
版权声明:
未经爱拍原创授权,任何第三方不得以转载、修改、复制、出版及其他方式使用本站视频。
确定取消关注TA (⊙o⊙)?
我再想想心意已决
下载爱拍APP
粤网文[8号
爱拍网违法和不良信息举报电话:
举报邮箱:
版权所有 广州爱拍网络科技有限公司
关注爱拍公众号
微信扫码关注或微信
搜索 “爱拍原创”
关注爱拍官方微博
微博扫码关注或《火线每日达人秀》37:爆破屠夫黑龙1V8灭队_《火线每日达人秀》_腾讯视频你的偶像正在直播中,
可用的推荐票
小凡:周末劲爆秀!爆破7连杀、1V8!
礼物加载异常,请点击重试
礼物正在加载中,请稍后......
加载失败,请点击重试
(错误代码:001)
登录后查看你的排名
我未上榜╮(╯▽╰)╭
最佳战绩:
本视频还没有人送礼╮(╯▽╰)╭
有钱任性,赏TA一个礼物呗~
加载失败,请点击重试
(错误代码:001)
0人正在看,条弹幕
本作品还没有弹幕╮(╯▽╰)╭
等你来一发!
加载失败,请点击重试
(错误代码:001)
投推荐票最多的观众
送礼值最高的观众
加载异常,请点击重试
(错误代码:005)
同专辑作品
作者更多作品
我来说两句...
现在还没有评论哦~快来抢沙发!
加载异常,请刷新重试
王者荣耀星耀榜&&排名&第50名
加载异常,请点击重试
(错误代码:005)
视频作者排行
新的一周开始啦,速来打榜赢福利!
加载失败,请点击重试
(错误代码:001)
加载失败,请点击重试
(错误代码:001)
版权声明:
未经爱拍原创授权,任何第三方不得以转载、修改、复制、出版及其他方式使用本站视频。
确定取消关注TA (⊙o⊙)?
我再想想心意已决
下载爱拍APP
粤网文[8号
爱拍网违法和不良信息举报电话:
举报邮箱:
版权所有 广州爱拍网络科技有限公司
关注爱拍公众号
微信扫码关注或微信
搜索 “爱拍原创”
关注爱拍官方微博
微博扫码关注或同步各端记录
下载PC客户端,上传视频更轻松!
药品服务许可证(京)-经营-
请使用者仔细阅读优酷、、
Copyright(C)2017 优酷 youku.com 版权所有
不良信息举报电话:
【震撼特效1v8】爆破特效满星连杀集锦
【震撼特效1v8】爆破特效满星连杀集锦—在线播放—《【震撼特效1v8】爆破特效满星连杀集锦》—游戏—优酷网,视频高清在线观看
微信/手机 扫码分享
点击一下 网页分享
<input id="link4" type="text" class="fn-share-input" value="" data-spm-anchor-id="0.0.0.i1" />
复制通用代码
<input type="text" class="fn-share-input" id="link3" value="" />
复制Html代码
复制Flash代码
将启用PC客户端下载视频
【震撼特效1v8】爆破特效满星连杀集锦
用优酷移动APP扫码
或用微信扫码观看
二维码2小时有效
没有客户端?扫码马上安装
IPHONE / 安卓
【震撼特效1v8】爆破特效满星连杀集锦
使用HTML5播放器
使用FLASH播放器[原创]爆破010 Editor v8.0.1
程序:010 Editor v8.0.1
系统:Windows 7 x64
工具:IDA Pro、Hex Workshop、Dev-C++。
这个程序运行时会弹出窗口,提示:
Evaluation Version30 Days Left
&当我们大幅修改系统日期,重新运行时,程序会有类似的提示:
Evaluation Version8 Uses Left
1、搜索关键字符串,定位重要的函数到IDA中搜索Days Left或者Uses Left,发现均有两处调用:
r8, aDaysL " Days Left"
sub_140AF6590:loc_140AF6850
r8, aDaysL " Days Left"
2、分析相关函数的逻辑函数sub_的功能分析 第一条红线提示Single User License或者Site License或者多用户的N User License第二条红线提示Evaluation Period Expired第三条红线提示Invalid License的第四条红线提示Upgrade Required - Evaluation Expired第五条红线提示Bad Clock Date再往后红线和绿线分别提示Use Left和Days Left
&我们只要让程序跳转到永远执行第一条红线,就可以保证永远提示我们拥有有效的License!
&此处关键跳转为jnz
loc_1406E39FA,相关代码段如下:
.text:E38E8
DATA XREF: .rdata:F7ABC8↓o
.text:E38E8
.text:E38E8 48 8D 4D E8
rcx, [rbp+var_18]
.text:E38EC FF 15 6E 50 BB 01
cs:__imp_??1QString@@QEAA@XZ ; QString::~QString(void)
.text:E38F2 8B 87 8C 01 00 00
eax, [rdi+18Ch]
.text:E38F8 3D DB 00 00 00
.text:E38FD 0F 85 F7 00 00 00
loc_1406E39FA
.text:EB 0D 8E 92 9A 01
rcx, cs:qword_14208CB98
.text:E390A 83 79 30 01
dword ptr [rcx+30h], 1
.text:E390E 75 2D
short loc_D
.text:ED 15 D9 25 EE 00
rdx, aRegisteredS "Registered - Single User License"
.text:ED 4D 30
rcx, [rbp+arg_0]
.text:E391B FF 15 E7 60 BB 01
cs:??0QString@@QEAA@PEBD@Z ; QString::QString(char const *)
.text:E3921 90
.text:E3921
} // starts at
使用二进制编辑工具把代表jnz
loc_1406E39FA的0F 85 F7 00 00 00用NOP指令替换掉即可。
&改完此处发现重启程序的提示并没有变化,我们再修改一下另一个函数。
函数sub_140AF6590的功能分析
&跟上面的那个函数很类似,这个函数最上面向左跳转的红线代表是已经注册的版本,向右的绿线表示是试用版,关键跳转指令为jnz
loc_140AF66EE,相关代码段如下:
.text:AF65BE
loc_140AF65BE:
DATA XREF: .rdata:A3E0↓o
.text:AF65BE
.text:AF65BE C7 44 24 20 00 00 00 00
[rsp+48h+var_28], 0
.text:AF65C6 48 8B CA
.text:AF65C9 FF 15 79 23 7A 01
cs:??0QString@@QEAA@XZ ; QString::QString(void)
.text:AF65CF C7 44 24 20 01 00 00 00
[rsp+48h+var_28], 1
.text:AF65D7 81 FF DB 00 00 00
.text:AF65DD 0F 85 0B 01 00 00
loc_140AF66EE
.text:AF65E3 83 7C 24 70 00
[rsp+48h+arg_20], 0
.text:AF65E8 74 10
short loc_140AF65FA
.text:AF65EA 48 8D 15 8F 48 F9 00
rdx, aLicensedT "Licensed to:\n"
.text:AF65F1 48 8B CB
.text:AF65F4 FF 15 06 34 7A 01
cs:??4QString@@QEAAAEAV0@PEBD@Z ; QString::operator=(char const *)
.text:AF65FA
.text:AF65FA
loc_140AF65FA:
CODE XREF: sub_140AF6590+58↑j
.text:AF65FA 48 8D 54 24 30
rdx, [rsp+48h+var_18]
.text:AF65FF 48 8B 0D 92 65 59 01
rcx, cs:qword_14208CB98
.text:AF 07 51 FF
.text:AF660B 90
.text:AF660B
} // starts at 140AF65BE
我们同样用二进制编辑器把这个跳转指令NOP掉。
&这时重新启动程序,我们似乎已经破解了,提示我们:
Licensed to:
0 User License
&如果感觉0 User License逼格不够,一会儿可以自己去进一步修改程序的逻辑。
3、测试破解后的程序我们把时间往后调几年,尝试把程序打开关闭十来次,发现果然没有完美破解,程序不再正常运行,弹出Register窗口:
&这说明程序启动时执行了一句跳转代码,判断我们是未注册的用户,不再为我们提供服务。我们重新进入战斗,搜索相关字符串!
4、搜索相关字符串“Check &License”,找到调用这个字符串的相关函数我们先搜索Check &License看看吧!(注:我之前总不知道为啥搜不到Check License,后来才发现L下面有个下划线。)
&然后再找到调用这个字符串的一串函数:
&Check &License -& sub_ -& sub_14000B26C -& 下面四处函数
sub_14000B26C; Register Form resource setting!
sub_14000B26C; Register Form resource setting!
sub_14000B26C; Register Form resource setting!
sub_140C50FA0+469
sub_14000B26C; Register Form resource setting!
&我们逐一分析上面涉及的每一个函数,发现sub_140C50FA0才是我们要找的!
&这个函数有多处跳转,如果这里的ebx等于0x177或0x2f或0xed或0x113或着不等于0x20c都将跳转到loc_140c51398,为我们弹出Register窗口,让我们无法正常使用。只有让程序跳转到loc_140c51463处才可以逃过开机的Register窗口
.text:C51350
.text:C 05 09 B8 43 01
cs:qword_14208CB60, rax
.text:C CE FF
r14d, 0FFFFFFFFh
.text:C5135B 81 FB 77 01 00 00
short loc_140C51398
.text:C51363 83 FB 2F
short loc_140C51398
.text:C51368 81 FB ED 00 00 00
short loc_140C51398
.text:C51370 81 FB 13 01 00 00
short loc_140C51398
.text:C51378 81 FB 0C 02 00 00
.text:C DF 00 00 00
loc_140C51463
.text:CB 0D 0D B8 43 01
rcx, cs:qword_14208CB98
.text:C5138B E8 30 1E 3B FF
.text:C C4 00 00 00
loc_140C5145C
.text:C51398
.text:C51398
loc_140C51398:
CODE XREF: sub_140C50FA0+3C1↑j
.text:C51398
sub_140C50FA0+3C6↑j ...
.text:CB C6
.text:CD 15 3E 06 3F 00
rdx, aIconsResources_16 ; ":/Icons/resources/010_icon_32x32.png"
.text:C513A2 48 8D 4D 97
rcx, [rbp+57h+var_C0]
.text:C513A6 FF 15 9C 86 64 01
cs:?fromUtf8@QString@@SA?AV1@PEBDH@Z ; QString::fromUtf8(char const *,int)
.text:C513AC 90
.text:C513AC
} // starts at 140C51350
loc_140C51463上面的几个跳转都nop掉,我又把上面的cmp
ebx, 20Ch给改成了cmp
ebx, 3323h(这里随便修改个啥值应该都没问题,如果有问题,你再换一个呀),修改后
&多次测试后,没有发现什么异常之处。
5、个性化修改License
&涉及到License的代码有下面两处,我打算把程序显示成Single User License或者Super VIP License,我们先修改sub_140AF6590,看看只改这一处行不行。
rdx, aSingleUserL "Single User License"
sub_140AF6590+BB
rdx, aSingleUserL "Single User License"
& 我们把跳转指令jnz
short loc_140AF6660替换为NOP,让它直接往下执行,就可以保证我们的License为Single User License
.text:AF663A
.text:AF663A
loc_140AF663A:
DATA XREF: .rdata:A400↓o
.text:AF663A
.text:AF663A 48 8D 4C 24 30
rcx, [rsp+48h+var_18]
.text:AF663F FF 15 1B 23 7A 01
cs:__imp_??1QString@@QEAA@XZ ; QString::~QString(void)
.text:AFD 30 01
dword ptr [rbp+30h], 1
short loc_140AF6660
.text:AF664B 48 8D 15 B6 48 3E 00
rdx, aSingleUserL "Single User License"
.text:AFB CB
.text:AF6655 FF 15 9D 33 7A 01
cs:??YQString@@QEAAAEAV0@PEBD@Z ; QString::operator+=(char const *)
.text:AF665B E9 83 00 00 00
loc_140AF66E3
我们可以使用Hex Workshop把二进制文件中的Single User License替换成自己想要的名字,只要保证不超过它的长度就行了,比如下图中的Super VIP License:
&不过在Register窗口显示我们还是0 User License,但是我相信聪明的你如果认真看下来,应该已经知道怎么改,该哪里了!
6、修复关闭Register窗口程序自动退出的问题
&我们发现Register窗口下面的按钮名称好像会变化,当名称变化时,程序也会有不同的反应。Register窗口底下第二个按钮,可以是&Cancel,&Continue或者E&xit。其中&表示后面一个字符带下划线。当显示E&xit时,如果关闭Register窗口,整个程序就会退出。
&这大概就是爆破的缺点吧,如果不深入分析找到问题的关键,就要挨个去修改细枝末节的问题。
搜索字符串E&xit,找到调用这个字符串最关键的一串函数这个字符串被两个函数调用:
r8, aEX "E&xit"
rdx, aEX "E&xit"
函数sub_太大了,看样子是主窗口中的Exit菜单,并不是我们要找的!在sub_中,我们看到了&Cancel,&Continue和E&xit相关的调用,不过这应该是Qt定义第二个按钮名称的代码,我们找到调用它的函数sub_,只有一个跳转指令,再往上找,我们找到五个调用sub_的函数
&E&xit -& sub_ -& sub_ -& 下面五个函数
sub_; The second button on Register window
sub_; The second button on Register window
sub_; The second button on Register window
sub_; The second button on Register window
sub_140C50FA0+482
sub_; Continue or Exit
&经过逐一排除,我们发现sub_函数中有一个call
sub_,跟进去之后发现相关的代码好像可以让整个程序退出。
&我们修改一个字节就可以了,把jnz short loc_1400DD86D替换为jmp short loc_1400DD86D, 这样关闭Register窗口应用程序永远都不会退出了。
破解补丁程序
&这个程序中使用了四个子函数!basic_patch已经可以让程序基本正常运行,虽然不够完美,对于一般用户来说足够了;license_patch让系统显示Single User License,如果有兴趣,你也可以进一步个性化修改,这个并不影响程序正常运行;registerExit_patch修正了关闭Register窗口整个程序都会退出的问题;checkLicense_patch使得用户不管输入什么样的用户名和密码,都会提示“Password accepted”,并且你的用户名会在启动程序时显示。
/******************************************************
****** Patched by
for 010 Editor v8.0.1 on Windows x64
******************************************************/
#include &stdio.h&
#include &stdlib.h&
void basic_patch(FILE *fp);
void license_patch(FILE *fp);
void registerExit_patch(FILE *fp);
void checkLicense_patch(FILE *fp);
int main()
fp = fopen("C:\\Program Files\\010 Editor\\010Editor.exe","rb+");
if(fp==NULL)
printf("Can't find 010Editor.exe.\n");
basic_patch(fp);
license_patch(fp);
registerExit_patch(fp);
checkLicense_patch(fp);
fclose(fp);
The basic_patch function is enough for ordinary people
void basic_patch(FILE *fp)//Patch for sub_140C50FA0
fseek(fp, 0xc50761, SEEK_SET);
//Offset:0xc50761
char patchs[] = {0x90, 0x90, 0x83, 0xfb, 0x2f,
0x90, 0x90, 0x81, 0xfb, 0xed,
0x00, 0x00, 0x00, 0x90, 0x90,
0x81, 0xfb, 0x13, 0x01, 0x00,
0x00, 0x90, 0x90, 0x81, 0xfb,
0xff, 0x33};
fail = fputs(patchs, fp);
if(fail == 0)
printf("\n----Basic patch success! 10 bytes are patched----\n");
printf("Basic patch failed!\n");
/* Function license_patch
* It will show Single user License after patch
void license_patch(FILE *fp)
int failA1,failA2,failB, failC;
fseek(fp, 0xaf59dd, SEEK_SET);
char patchA1[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
failA1 = fputs(patchA1, fp);//0 User License
fseek(fp, 0x6e2cfd, SEEK_SET);
char patchA2[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
failA2 = fputs(patchA2, fp);//0 User License
fseek(fp, 0xaf5a49, SEEK_SET);
char patchB[] = {0x90, 0x90};
failB = fputs(patchB, fp);//Single User License
fseek(fp, 0x6e2d0e, SEEK_SET);
char patchC[] = {0x90, 0x90};
failC = fputs(patchC, fp);//Single User License
if( (failA1==0) & (failA2==0) & (failB==0) & (failC==0))
printf("\n----License patch success! 16 bytes are patched ----\
\n Your program are now licensed to \"Single User License\".\n");
printf("----License patch failed!----\n");
Function registerExit_patch fix the bug when you close
the Register Window, your program will terminate
void registerExit_patch(FILE *fp)
fseek(fp, 0xdcc51, SEEK_SET);
char patch[] = {0xeb};
fail = fputs(patch, fp);
if(fail == 0)
printf("\n----Register_Exit patch success! 1 byte is patched----\n");
printf("Register patch failed!\n");
Function checkLicense_patch
If you don't left username and password blank, when you press "Check License"
on Register window, you will always success!
void checkLicense_patch(FILE *fp)
fseek(fp, 0x6e268b, SEEK_SET);
char patch[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
fail = fputs(patch, fp);
if(fail == 0)
printf("\n----Check License patch success! 6 bytes is patched----\n");
printf("Check License patch failed!\n");
运行完上面的程序后,重新打开Register窗口,随便输入用户名和密码的效果图:
被Explorerl编辑
,原因: update patch program
支付方式:
最新回复 (22)
受益很大,非常感谢
受益很大,非常感谢
不客气!我从看雪学到了很多东西,潜水好几年,也应该做一点小小的贡献了
被Explorerl编辑
,原因: 修改错别字
删除此层,整理到上面
被Explorerl编辑
被Explorerl编辑
学习学习,哈哈
Hi& Did& some& changes& to& the& C& code& to& get& it& working& correctly& ,& also& on& the& first& patch& my& version& of& 010& & V801& editor& had& some& small& differences& to& the& code(& reflected& in& my& version& of& the& patch& code& )#include& &stdafx.h&#include& &windows.h&#include& &stdio.h&#include& &stdlib.h&#include& &stdint.h&#include& &time.h&/******************************************************& & & & & Patched& by& & on& & & & & & for& 010& Editor& v8.0.1& on& Windows& x64& ******************************************************/& & void& basic_patch(FILE& *fp);void& license_patch(FILE& *fp);void& registerExit_patch(FILE& *fp);void& checkLicense_patch(FILE& *fp);int& main(){& &
& & & &printf(&010& Editor& V801& Patcher& & -& Run& in& local& directory& where& 010Editor& files& reside& \n&); & & & & & & & &FILE& *& & & & int& rtn=0;& & & & fp& =& fopen(&010Editor.exe&,&rb+&);& //& Changes& to& run& in& local& dir& of& program& as& not& all& programs& are& installed& in& default& ms& dirs& & & & if(fp==NULL)& & & & {& & & & & & & & printf(&Can't& find& 010Editor.exe.\n&);& & & & & & & & exit(0);& & & & }& & & & & basic_patch(fp);& & & & license_patch(fp);& & & & registerExit_patch(fp);& & & & checkLicense_patch(fp);& & & & & fclose(fp);& & & & return& 0;}& /*The& basic_patch& function& is& enough& for& ordinary& people*/void& basic_patch(FILE& *fp)//Patch& for& sub_140C50FA0{& & & & int&& & & & & & & fseek(fp,& 0xc50760,& SEEK_SET);& & & & & & & //Offset:0xc50761& & & & & & & uint8_t& patchs[36]& =& {0x0,0x90,& 0x90,& 0x83,& 0xfb,& 0x2f,& 0x90,& 0x90,& 0x81,& 0xfb,& 0xed,0x00,& 0x00,& 0x00,& 0x90,& 0x90,& 0x81,& 0xfb,& 0x13,& 0x01,& 0x00,& 0x00,& 0x90,& 0x90,& 0x81,& 0xfb,& 0x0c,& 0x02,& 0x00,& 0x00,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90};& & & //& fail& =& fputs(patchs,& fp); & & & &fail& =& fwrite(patchs,& sizeof(patchs),& 1,& fp);& & & & //(& changed& to& file& write& as& the& values& of& the& the& array& are& bigger& than& the& defined& char& used& )& //& From& exe& file& of& editor& as& per& tutorial//00c50760h:& 00& 90& 90& 83& FB& 2F& 90& 90& 81& FB& ED& 00& 00& 00& 90& 90& ;& .????/????í...??& & & & & & (& check& newer& versions& at& this& address& ,& my& version& is& slightly& different& to& the& original& in& the& tutorial& ) & & & &//00c50770h:& 81& FB& 13& 01& 00& 00& 90& 90& 81& FB& 0C& 02& 00& 00& 0F& 85& ;& ??....????.....…//00c50780h:& DF& 00& 00& 00& 48& 8B& 0D& 0D& B8& 43& 01& E8& 30& 1E& 3B& FF& ;& ss...H<..,C.è0.;?& & & & if(fail& ==& 1)& & & & & & & & printf(&\n----Basic& patch& success!& 10& bytes& are& patched----& & %x& :\n& &,fail);& & & & else& & & & & & & & printf(&Basic& patch& failed!%x& :\n& &,fail);& }/*& Function& license_patch*& It& will& show& Single& user& License& after& patch*/& void& license_patch(FILE& *fp){& & & & int& failA1,failA2,failB,& failC;& & & & & & & & fseek(fp,& 0xaf59d0,& SEEK_SET);& & & & & & &
& & & && & & uint8_t& patchA1[32]& =& {0x44,& 0x24,& 0x20,& 0x01,& 0x00,& 0x00,& 0x00,& 0x81,& 0xFF,& 0xDB,& 0x00,& 0x00,& 0x00,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x83,& 0x7C,& 0x24,& 0x70,& 0x00,& 0x74,& 0x10,& 0x48,& 0x8D,& 0x15,& 0x8F,& 0x48,& 0xF9};& &
& & & && & &
& & & && & //& failA1& =& fputs(patchA1,& fp);//0& User& License & & & && & & failA1& =& fwrite(patchA1,& sizeof(patchA1),& 1,& fp); & & & &//& From& exe& file& of& editor& as& per& tutorial & & & &//& 00af59d0h:& 44& 24& 20& 01& 00& 00& 00& 81& FF& DB& 00& 00& 00& 0F& 85& 0B& & & & //& 00af59e0h:& 01& 00& 00& 83& 7C& 24& 70& 00& 74& 10& 48& 8D& 15& 8F& 48& F9& & & & & fseek(fp,& 0x6e2cf0,& SEEK_SET);& & & & & & & uint8_t& patchA2[32]& =& {0xBB,& 0x01,& 0x8B,& 0x87,& 0x8C,& 0x01,& 0x00,& 0x00,& 0x3D,& 0xDB,& 0x00,& 0x00,& 0x00,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x48,& 0x8B,& 0x0D,& 0x8E,& 0x92,& 0x9A,& 0x01,& 0x83,& 0x79,& 0x30,& 0x01,& 0x75,& 0x2D};& &
& & & && & & //failA2& =& fputs(patchA2,& fp);//0& User& License & & & && & & failA2& =& fwrite(patchA2,& sizeof(patchA2),& 1,& fp);& & & & //& From& exe& file& of& editor& as& per& tutorial & & & &//006e2cf0h:& BB& 01& 8B& 87& 8C& 01& 00& 00& 3D& DB& 00& 00& 00& 0F& 85& F7& & & & //006e2d00h:& 00& 00& 00& 48& 8B& 0D& 8E& 92& 9A& 01& 83& 79& 30& 01& 75& 2D& & & & & fseek(fp,& 0xaf5a40,& SEEK_SET);& & & & & & & & uint8_t& patchB[32]& =& {0x15,& 0x1B,& 0x23,& 0x7A,& 0x01,& 0x83,& 0x7D,& 0x30,& 0x01,0x90,& 0x90,& 0x48,& 0x8D,& 0x15,& 0xB6,& 0x48,& 0x3E,& 0x00,& 0x48,& 0x8B,& 0xCB,& 0xFF,& 0x15,& 0x9D,& 0x33,& 0x7A,& 0x01,& 0xE9,& 0x83,& 0x00,& 0x00,& 0x00};& & & &
& & & & & & & &//failB& =& fputs(patchB,& fp);//Single& User& License & & & & & & & &failB& =& fwrite(patchB,& sizeof(patchB),& 1,& fp);& & & & //& From& exe& file& of& editor& as& per& tutorial & & & &//00af5a40h:& 15& 1B& 23& 7A& 01& 83& 7D& 30& 01& 75& 15& 48& 8D& 15& B6& 48& ;& & & & & //00af5a50h:& 3E& 00& 48& 8B& CB& FF& 15& 9D& 33& 7A& 01& E9& 83& 00& 00& 00& ;& & & & & & fseek(fp,& 0x6e2d00,& SEEK_SET);& & & & uint8_t& patchC[32]& =& {0x90,& 0x90,& 0x90,& 0x48,& 0x8B,& 0x0D,& 0x8E,& 0x92,& 0x9A,& 0x01,& 0x83,& 0x79,& 0x30,& 0x01,& 0x90,& 0x90,& 0x48,& 0x8D,& 0x15,& 0xD9,& 0x25,& 0xEE,& 0x00,& 0x48,& 0x8D,& 0x4D,& 0x30,& 0xFF,& 0x15,& 0xE7,& 0x60,& 0xBB};& & & & //failC& =& fputs(patchC,& fp);//Single& User& License & & & &failC& =& fwrite(patchC,& sizeof(patchC),& 1,& fp); & & & &//& From& exe& file& of& editor& as& per& tutorial & & & &//006e2d00h:& 00& 00& 00& 48& 8B& 0D& 8E& 92& 9A& 01& 83& 79& 30& 01& 75& 2D& ;& & & & & //006e2d10h:& 48& 8D& 15& D9& 25& EE& 00& 48& 8D& 4D& 30& FF& 15& E7& 60& BB& ;& & & & & & & & if(& (failA1==1)& && (failA2==1)& && (failB==1)& && (failC==1))& & & & & & & & & & & & printf(&\n----License& patch& success!& 16& bytes& are& patched& ----\& & & & & & & & & & & & & & & & & & & & \n& Your& program& are& now& licensed& to& \&Single& User& License\&& %x:\n& &,failA1);& & & & else& & & & & & & & printf(&----License& patch& failed!----& %x:& \n& &,failA1);& /*Function& registerExit_patch& fix& the& bug& when& you& closethe& Register& Window,& your& program& will& terminate*/void& registerExit_patch(FILE& *fp){& & & & int&& & & & & & & fseek(fp,& 0xdcc50,& SEEK_SET); & & & && & &
& & & && & & & & & & & & uint8_t& patch[32]& =& {0xC0,& 0xEB,& 0x1A,& 0x48,& 0x8B,& 0x05,& 0x7E,& 0xFB,& 0xFA,& 0x01,& 0x83,& 0xB8,& 0x88,& 0x01,& 0x00,& 0x00& ,& 0x00,& 0x74,& 0x0A,& 0x48,& 0x8B,& 0xCB,& 0xE8,& 0xA6,& 0x53,& 0xF2,& 0xFF,& 0xEB,& 0x08,& 0x48,& 0x8B,& 0xCB};& & & &
& & & &//& From& exe& file& of& editor& as& per& tutorial&
& & & &//000dcc50h:& C0& 75& 1A& 48& 8B& 05& 7E& FB& FA& 01& 83& B8& 88& 01& 00& 00& ;& & & & & //000dcc60h:& 00& 74& 0A& 48& 8B& CB& E8& A6& 53& F2& FF& EB& 08& 48& 8B& CB& ;& & & & & //fail& =& fputs(patch,& fp); & & & &fail& =& fwrite(patch,& sizeof(patch),& 1,& fp);& & & & if(fail& ==& 1)& & & & & & & & printf(&\n----Register_Exit& patch& success!& 1& byte& is& patched----& %x:& \n&,fail);& & & & else& & & & & & & & printf(&Register& patch& failed!& %x& :\n&,fail);& }& /*Function& checkLicense_patchIf& you& don't& left& username& and& password& blank,& when& you& press& &Check& License&on& Register& window,& you& will& always& success!*/void& checkLicense_patch(FILE& *fp){& & & & int&& & &
& & & &fseek(fp,& 0x6e2680,& SEEK_SET);& & & & & & & uint8_t& patchD[32]& =& {0x0D,& 0x13,& 0x99,& 0x9A,& 0x01,& 0x81,& 0xFB,& 0xDB,& 0x00,& 0x00,& 0x00,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x90,& 0x48,& 0x8D,& 0x55,& 0xE0,& 0xE8,& 0x18,& 0x6C,& 0x92,& 0xFF,& 0x48,& 0x8D,& 0x15,& 0x07,& 0x26,& 0xEE}; & & & && & & //& From& exe& file& of& editor& as& per& tutorial & & & && & & //006e2680h:& 0D& 13& 99& 9A& 01& 81& FB& DB& 00& 00& 00& 0F& 85& 2E& 01& 00& ; & & & && & & //006e2690h:& 00& 48& 8D& 55& E0& E8& 18& 6C& 92& FF& 48& 8D& 15& 07& 26& EE& ;& & & & & //fail& =& fputs(patch,& fp); & & & &fail& =& fwrite(patchD,& sizeof(patchD),& 1,& fp);& & & & if(fail& ==& 1)& & & & & & & & printf(&\n----Check& License& patch& success!& 6& bytes& is& patched----& %x& \n&,fail);& & & & else& & & & & & & & printf(&Check& License& patch& failed!& %x& \n&,fail);& }
这个牛呀,原来patch的程序是这样写的,本人暂时只会用x64dbg进行动态修改。神奇,向楼主学习。&
好久没上了,一来就看到这么好的文章,有的学了
我还是默默的潜水,向楼主学习
mac版吗?网络验证能过吗?
@dryzh& 这是在虚拟机中Win& 7下测试的,linux版的破解方式也是类似的,mac应该也差不多。我的虚拟机专门用来逆向分析一些程序的,没有网络,目前没遇到任何问题。
我还是默默的潜水,向楼主学习
mark一波,准备学习
谢谢楼主分享,现在网上有很多破解版,但是打开进程功能不能用,一打开就提示错误,用旧版本就可以,你测试下你的版本是否有这个问题。谢谢了
谢谢楼主分享,现在网上有很多破解版,但是打开进程功能不能用,一打开就提示错误,用旧版本就可以,你测试下你的版本是否有这个问题。谢谢了
我个人测试没发现什么问题,在虚拟机里正常使用两个多月了。
我个人测试没发现什么问题,在虚拟机里正常使用两个多月了。
谢谢你的及时回复,我刚才亲自做了实验,步骤和结果如下:1.我首先复制你patch代码。然后对新安装的010& editor& 8.0.1& 版本进行打补丁。屏幕显示一切ok,但是我运行打过补丁的程序时直接奔溃了。2.然后我用下方评论区& Willebul& 的代码(在你代码上做的修改)制作的补丁程序给010& editor& 8.0.1& 版本打补丁,运行一切正常,注册完直接可以用。打开进程功能也是好的。
OK,多谢反馈测试结果!楼上那位Willebul兄弟用的版本跟我的可能不太一样,但是破解思路都是类似的。即使以后更新版本,如果加密方法变化不大,也可以把程序拖到IDA中,找到关键点,用二进制编辑器编辑一下就行了。
OK,多谢反馈测试结果!
楼上那位Willebul兄弟用的版本跟我的可能不太一样,但是破解思路都是类似的。即使以后更新版本,如果加密方法变化不大,也可以把程序拖到IDA中,找到关键点,用二进制编 ...
应该是版本不对导致的。我突然想起来,我安装的是010& & editor& & 8.0.1& x64的版本,不知道跟你测试的版本一样不?
应该是版本不对导致的。
我突然想起来,我安装的是010
8.0.1 x64的版本,不知道跟你测试的版本一样不?
那样的话,版本应该一样吧!我是在64位英文版Win 7下测试的,那个patch程序是用Dev-C++编译的。安装包校验码如下
$ md5sum 010EditorWin64Installer801.exe
13c2e3b994cb
010EditorWin64Installer801.exe
$ sha256sum 010EditorWin64Installer801.exe
53e8cdb701b0dcbb47d3fb2f33d2ac946b5b2bdaEditorWin64Installer801.exe
我的环境是64位中文版& win7,用vc编译的。安装包校验码:md5:13c2e3b994cb& *010EditorWin64Installer801.exesha256:53e8cdb701b0dcbb47d3fb2f33d2ac946b5b2bda4686& *010EditorWin64Installer801.exe说明安装包都是同一个。& 应该是编译环境不同导致的。
1.请先关注公众号。
2.点击菜单"更多"。
3.选择获取下载码。

我要回帖

更多关于 杀戮间2爆破手 的文章

 

随机推荐