首页
社区
课程
招聘
[旧帖] [原创]走狗屎运的破解和第一次写补丁(邀请码已收到) 0.00雪花
发表于: 2009-11-27 23:36 1823

[旧帖] [原创]走狗屎运的破解和第一次写补丁(邀请码已收到) 0.00雪花

2009-11-27 23:36
1823
早上一开机逛下看雪看了看银行账户,唉!还差13才能换邀请码。郁闷。。~~~为了想快点得到邀请码就到求助问答区去逛了下,一看有个朋友要一个要用TC2.0写个图形界面登录程序的。我一想嘿嘿换K的机会来了,只是很多函数都不记得了。。立马google下了个TC2.0查看函数的工具。一看还有使用次数,随手就用PEID0.94查了下:


没有壳个,看了这么久的书还重来没有破过除书本以外的软件个。那就试下吧。。。
一不小心发现2个比较函数。。。(我刚还在想。。就这么简单让我破了。。)


结果断不下来(不知道是断的方法不对还是怎么,有人知道希望可以教教),接下来就郁闷了花了2个小时慢慢跟踪没有发现什么好断的,找了messagebox也没有断到。。。迷茫,最后我想起了注册输入的时候应该会有取密码的函数getdlgtext之类的函数,结果又是找了十来分钟。。未果。后来一想干脆找找那 注册未成功 的几个文字看看个。。



这次真把我眼睛给找花了,结果到最后2页才出现。把我气得。。双击注册成功来到了:


一看也不知道要怎么办,找找哪个地方跳过来的吧。说实在的也不知道怎么看,只知道看左边有没有红线是往这一行来的,又是找了半天没找到。越看越郁闷。。都弄了一下午了。。既然来了总要试下吧,就找了一个最近的call按了下F2:


F9运行了下也不知道断在了哪里,结果程序运行起来了。我就照常点了下注册的按钮:


欣喜若狂。。嘿嘿。。断下来了。。F8慢慢跟看看到底是怎么加密的。。弄了半天还是没有看出什么东西来,来回弄了几次。。想了想我每次要运行到注册成功那里都是那个jnz跳转跳走了。。是不是顺着运行到 "注册成功"那行里就真的注册成功了呢,查了下汇编命令把jnz 改成了jz 就没有跳了这次的狗屎运就不小心产生了。。F8几次后就变成已经是注册用户了。。。呵呵~~~真奇妙。

由于作者限制使用次数不是卖钱,只是想交朋友,我就把软件名字没做处理。有兴趣的也可以下下来破着玩下,注册码的算法我还没有算出来,也不会算。。慢慢摸索吧。

正巧我刚好看书看到了内存补丁,是不是可以做一个呢。。买了《加密解密》第三版的可以翻到18章补丁技术(第492页)来看下,照抄了下(只改了改参数和加了个main运行主函数)。ide用的VC++6.0编译通过。

#include "windows.h"

BOOL PATCH () {

  HANDLE  hFile;
  TCHAR  *Filename = "tcsear.exe";
  DWORD  szTemp;
  DWORD  FileSize;
  DWORD  lFileSize = 897024 ;
  DWORD  lFileOffset = 0x1f773;
  DWORD  lChange = 1;
  BYTE  BytesToWrite[] = {0x74};   //反补丁的话就把0x74 改成 0x75

  hFile = CreateFile(Filename,0XC0000000,3,NULL,3, FILE_ATTRIBUTE_NORMAL,NULL);

  if (hFile != INVALID_HANDLE_VALUE) {
    
    FileSize = GetFileSize(hFile,&szTemp);
    if (FileSize == 0xFFFFFFFF) {
      CloseHandle(hFile);

      return FALSE;
    }

    if (FileSize != lFileSize) {
      CloseHandle(hFile);

      return FALSE;
    }

    SetFilePointer(hFile,lFileOffset,NULL,FILE_BEGIN);
    if (!WriteFile(hFile,&BytesToWrite,lChange,&szTemp,NULL)){

        CloseHandle(hFile);
        return TRUE;
    }
    
      CloseHandle(hFile);
      return TRUE;
  }
  
    return FALSE;
}

VOID main () {

  PATCH ();
  
}
开始还不知道算地址,回顾了下以前的章节。有《加密解密》第三版的书的可以翻到276页,又不知道是什么狗屎运,用peid0.94看了下发现虚拟地址偏移和文件偏移一样 1000:

也就是说不用转换直接把基址40000减了就可以了,然后填上参数。也不知道成功没有,因为开始就已经改了,就写了2个补丁一个反补丁(74<JE>改成75<JNE>)让程序变成原样反破解的,还一个就是上面贴出来的破解补丁。其实暴力破解本来就没有什么技术,而且还是乱碰碰中的。反思了下还是要多加强基础知识的学习啊,基础好也不至于破了这么久个。呵呵,狗屎运一路走了下来。。。成功了!给了我极大的勇气继续坚持学习下去。希望在这能多交几个朋友。。。。也不知道这样没有技术含量的贴能不能送个Key。

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有图有字,不错。
图片有水印,也可以上传到论坛上。
2009-11-27 23:54
0
雪    币: 56
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,谢谢捧场。现在还在兴奋中。。
2009-11-28 00:10
0
雪    币: 173
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
很好很强大,学习下
2009-11-28 00:23
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
回复有分拿的不?
2009-11-28 12:54
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
msl
6
路过。。。。看看
2009-12-1 15:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错,学习中
2009-12-1 16:25
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
正在努力学习中~~
2009-12-1 16:40
0
雪    币: 139
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
哈哈,精神值得鼓励和学习!
2009-12-1 16:43
0
雪    币: 417
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习。。。。。
2009-12-4 16:29
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
bp GetDlgItemTextA  试试
2009-12-4 17:11
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
啊啊啊啊啊啊,我极度自卑啊,楼主好强大
2009-12-4 19:28
0
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不错,学习中
2009-12-4 19:49
0
雪    币: 81
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
说实话, 没看懂
2009-12-4 19:56
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
没有断下来的原因是你在系统的领空。明白?
JNZ那个地方就是关键跳。前面应该有比较函数。你仔细看看咯。。呵呵
这个还是蛮简单的
2009-12-5 14:17
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我是一小白,路过,看过。
2009-12-5 16:22
0
雪    币: 170
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学习精神,为邀请码奋斗
2009-12-5 17:26
0
游客
登录 | 注册 方可回帖
返回
//