首页
社区
课程
招聘
[原创]莱鸟爆破某人事软件
发表于: 2005-7-31 13:10 5621

[原创]莱鸟爆破某人事软件

2005-7-31 13:10
5621
莱鸟爆破某人事软件

     日期:2005年7月31日   破解人:林海雪原
―――――――――――――――――――――――――――――――――――――――――――

【软件名称】:国产软件不必明言   软件版本:
【软件大小】: KB
【下载地址】:http://
【软件简介】:“人力资源是企业经营的第一资源”。是MBA管理思想在中国企业管理实践中应用的一个“人力资源整合”管理软件产品,包括

现代企业员工档案管理、员工招聘、员工培训、薪酬管理、绩效考核、奖惩管理、调动管理、合同管理、保险福利管理、考勤管理等十大模块

。C/S与B/S组合架构设计,具有强大的数据安全保障,并支持可扩展的远程查询功能和远程数据采集功能。
【软件限制】:50人和50天限制,打印限制.
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:flyodbg,peid,W32Dasm

―――――――――――――――――――――――――――――――――――――――――――
 
【破解过程】:

   由于是试用的,不提供注册,只好爆破作业--其实俺们也只会这个:( 。本人很莱,这是俺的第一篇破文,请高手多指教!

1、用peid查壳,是Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]加壳,用ArmaDumper脱之。

2、用W32Dasm载入,查相关限制的字符串,有多处,记下地址。

3、用od载入
0072F630 U> $  55             push ebp          <----暂停于OEP;
0072F631    .  8BEC           mov ebp,esp
0072F633    .  83C4 F0        add esp,-10
0072F636    .  53             push ebx
0072F637    .  56             push esi
0072F638    .  57             push edi
0072F639    .  B8 60E97200    mov eax,Unpack1.0072E960
.....
找到00696EA1,这是50个员工的限制:
00696E90   |> \8BC6           mov eax,esi
00696E92   |.  E8 D9E1FFFF    call Unpacked.00695070
00696E97   |.  A1 6C507300    mov eax,dword ptr ds:[73506C]
00696E9C   |.  8338 32        cmp dword ptr ds:[eax],32
00696E9F   |.  7C 0F          jl short Unpacked.00696EB0
00696EA1   |.  B8 F4706900    mov eax,Unpacked.006970F4
00696EA6   |.  E8 F9480900    call Unpacked.0072B7A4
00696EAB   |.  E8 E068D7FF    call Unpacked.0040D790
00696EB0   |>  BA 48716900    mov edx,Unpacked.00697148            ;  ASCII "department"

看看00696E9F处可以跳过,就把7c-->eb, ....把记下的地址找到一一修改。

run! 主界面选员工就职-->增加员工。ok!50人限制没了!不会把???

4、管它3721,看看50次限制在说:

0072F8ED     8B10             mov edx,dword ptr ds:[eax]
0072F8EF     FF92 E8000000    call dword ptr ds:[edx+E8]       1<-------logo!登陆!
0072F8F5     E8 62B6FFFF      call Unpack1.0072AF5C            2<-----
0072F8FA     E8 21A7FFFF      call Unpack1.0072A020            3<-----
0072F8FF     85C0             test eax,eax

重载入,在0072F8F5处下断,点登陆后单步跟到这:

0072A046   |.  E8 6D28D6FF    call Unpack1.0048C8B8
0072A04B   |.  8B03           mov eax,dword ptr ds:[ebx]
0072A04D   |.  8B80 F8020000  mov eax,dword ptr ds:[eax+2F8]
0072A053   |.  E8 649BDCFF    call Unpack1.004F3BBC
0072A058   |.  BA 78A17200    mov edx,Unpack1.0072A178       ;  ASCII "SELECT paytype FROM mysetting "
0072A05D   |.  8B08           mov ecx,dword ptr ds:[eax]
0072A05F   |.  FF51 2C        call dword ptr ds:[ecx+2C]
0072A062   |.  8B03           mov eax,dword ptr ds:[ebx]
0072A064   |.  8B80 F8020000  mov eax,dword ptr ds:[eax+2F8]

   我注意到"SELECT paytype FROM mysetting "出现了好几次,于是打开数据库,果真如此!有“mysetting”表,里面就是试用期!修改为

最大数“999999999”,重run,嘿,它诰诉我还有“999999999”次才到期!
真这么简单?好戏在后面!当我再次run时,我的60个员工被裁员10个!--好!替我裁员了,真是自作聪明!
0072A0BB   |.  FF75 FC        push dword ptr ss:[ebp-4] <----堆栈 ss:[0012FF98]=028AE9F0, (ASCII"999999984");试用天数
0072A0BE   |.  68 98A27200    push Unpack1.0072A298      
0072A0C3   |.  B8 98897300    mov eax,Unpack1.00738998
0072A0C8   |.  BA 03000000    mov edx,3
0072A0CD   |.  E8 82AACDFF    call Unpack1.00404B54
0072A0D2   |.  8B03           mov eax,dword ptr ds:[ebx]
0072A0D4   |.  8B80 F8020000  mov eax,dword ptr ds:[eax+2F8]
0072A0DA   |.  E8 D927D6FF    call Unpack1.0048C8B8
0072A0DF   |.  8D55 F0        lea edx,dword ptr ss:[ebp-10]
0072A0E2   |.  A1 A8897300    mov eax,dword ptr ds:[7389A8]
0072A0E7   |.  48             dec eax                           
0072A0E8   |.  E8 B3F7CDFF    call Unpack1.004098A0
0072A0ED   |.  8B4D F0        mov ecx,dword ptr ss:[ebp-10]   <----试用天数-1

<<<<<<<<<<<<<<修改如此,就永远不过期!>>>>>>>>>>>>>>>>>>>>>>>>
0072A0ED       8B4D FC        mov ecx,dword ptr ss:[ebp-4]  >
<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>

0072A0F0   |.  8D45 F4        lea eax,dword ptr ss:[ebp-C]
0072A0F3   |.  BA A8A27200    mov edx,Unpack1.0072A2A8       ; ASCII "UPDATE mysetting SET paytype ="\\写表!
0072A0F8   |.  E8 E3A9CDFF    call Unpack1.00404AE0
0072A0FD   |.  8B55 F4        mov edx,dword ptr ss:[ebp-C]

5、拔掉那个暗丁!

经多次跟踪,我把目标锁定在这:

0072F8EB     8B00             mov eax,dword ptr ds:[eax]
0072F8ED     8B10             mov edx,dword ptr ds:[eax]
0072F8EF     FF92 E8000000    call dword ptr ds:[edx+E8]       1<-------logo!登陆!
0072F8F5     E8 62B6FFFF      call Unpack1.0072AF5C            2<-----删除50个以上员工!
0072F8FA     E8 21A7FFFF      call Unpack1.0072A020            3<-----试用期计算!
0072F8FF     85C0             test eax,eax
0072F901     7E 26            jle short Unpack1.0072F929

  2: 0072F8F5 的 call Unpack1.0072AF5C:   启动时删除员工!!!

0072AF5C   /$  55             push ebp    《--修改为ret!
0072AF5D   |.  8BEC           mov ebp,esp
0072AF5F   |.  B9 0E000000    mov ecx,0E
0072AF64   |>  6A 00          /push 0
0072AF66   |.  6A 00          |push 0
0072AF68   |.  49             |dec ecx
0072AF69   |.^ 75 F9          \jnz short Unpack1.0072AF>
0072AF6B   |.  53             push ebx
0072AF6C   |.  8B1D DC4C7300  mov ebx,dword ptr ds:[734>;  Unpack1.00738A50
0072AF72   |.  33C0           xor eax,eax
0072AF74   |.  55             push ebp
..........
0072B100   |.  8D45 94        lea eax,dword ptr ss:[ebp-6C]
0072B103   |.  BA 06000000    mov edx,6
0072B108   |.  E8 479ACDFF    call Unpacked.00404B54
0072B10D   |.  8B55 94        mov edx,dword ptr ss:[ebp-6C]
0072B110   |.  A1 E4457300    mov eax,dword ptr ds:[7345E4]
0072B115   |.  8B00           mov eax,dword ptr ds:[eax]
0072B117   |.  E8 A038D2FF    call Unpacked.0044E9BC
0072B11C   |.  E8 1FF9FFFF    call Unpacked.0072AA40
0072B121   |.  E8 CEFAFFFF    call Unpacked.0072ABF4
0072B126   |.  E8 A1F4FFFF    call Unpacked.0072A5CC
0072B12B   |.  E8 78FCFFFF    call Unpacked.0072ADA8
0072B130   |.  33C0           xor eax,eax
0072B132   |.  5A             pop edx
0072B133   |.  59             pop ecx
0072B134   |.  59             pop ecx
..........
     当然,代码很长,我试了一下“空城计”,就是直截了当的让0072F8F5 的 call Unpack1.0072AF5C返回---修改第一句“55”为"c3"。
运行!嘿,我的员工是55个!(只加了5个),可是,上帝啊,好景不长,当我高兴的点击“浏览员工”想看看我的子民时,我的员工又只有50

个了!还有暗丁!可是如何找呢?大虾们有好方法诰诉我下。一时没了主意,只好来莱鸟的手段!我把0072F8F5 的 call中的所有子call的入

口处全下断---莱鸟把它叫做“全面反击”,我想是这些子call在别处被调用了啊(后来证明事实如此,如果不是那就没有办法了,真的很莱啊

)。很快我找到这:

00685808   |.  55             push ebp
00685809   |.  68 73586800    push Unpack2.00685873
0068580E   |.  64:FF30        push dword ptr fs:[eax]
00685811   |.  64:8920        mov dword ptr fs:[eax],esp
00685814   |.  E8 27520A00    call Unpack2.0072AA40      <<<<<<<<<<<<<<<这!!!删除了!!!!
00685819   |.  E8 D6530A00    call Unpack2.0072ABF4      <<<<<<<<<<<<<<<这!!!再次删除!!!!
0068581E   |.  8B45 FC        mov eax,dword ptr ss:[ebp-4]
00685821   |.  33D2           xor edx,edx
00685823   |.  8990 60070000  mov dword ptr ds:[eax+760],edx
00685829   |.  8B45 FC        mov eax,dword ptr ss:[ebp-4]
0068582C   |.  8B80 B8030000  mov eax,dword ptr ds:[eax+3B8]
00685832   |.  8B80 A8020000  mov eax,dword ptr ds:[eax+2A8]
00685838   |.  E8 DB53D9FF    call Unpack2.0041AC18
0068583D   |.  48             dec eax

  还不只一次,是连续二次!这地方多次被call,我只好再次用上"空城计",把Unpack2.0072AA40 和call Unpack2.0072ABF4的第一句ret了事!
  到这基本算是完了,可那个试用期提示看起来总感觉不舒服,于是下bp messageboxa,立即拦了下来,shift+f9到这:

004706D1   |.  64:8921        mov dword ptr fs:[ecx],esp
004706D4   |.  53             push ebx                       ; /Style
004706D5   |.  57             push edi                       ; |Title
004706D6   |.  56             push esi                       ; |Text
004706D7   |.  8B45 FC        mov eax,dword ptr ss:[ebp-4]   ; |
004706DA   |.  8B40 30        mov eax,dword ptr ds:[eax+30]  ; |
004706DD   |.  50             push eax                       ; |hOwner
004706DE   |.  E8 0976F9FF    call Unpack1.00407CEC          ; \MessageBoxA
004706E3   |.  8945 F8        mov dword ptr ss:[ebp-8],eax   ; 《---停于此!
004706E6   |.  33C0           xor eax,eax

莱鸟一时高兴又唱了一出“空城计”:

004705F8   /$  55             push ebp        <<----莱鸟ret了这!
004705F9   |.  8BEC           mov ebp,esp
004705FB   |.  83C4 AC        add esp,-54
004705FE   |.  53             push ebx
004705FF   |.  56             push esi
莱鸟这下犯大错了,我返回了所有call,也包括那些正常调用,所以,俺的程序退不出了,屋~~~~~~~(教训:“空城计”不能乱唱!)

我只好nop这了:
0072F918     A1 1C4C7300      mov eax,dword ptr ds:[734C1C]
0072F91D     8B00             mov eax,dword ptr ds:[eax]
0072F91F     E8 D40CD4FF      call Unpack1.004705F8  <-------------提示:你还可用XXXXXX天!nop掉
0072F924     E9 AC000000      jmp Unpack1.0072F9D5            
0072F929     6A 00            push 0
到这我收工了,可是那个打印.....
006BA4C0     B8 D4A46B00      MOV EAX,6BA4D4                 \->: 您使用的是我公司产品的试用版本。打印只有正试版中才有。
原版本是可用的,脱壳后就没了??我跟到这就没法子了:

有关打印:<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<请高手指教!

0044B790     55               push ebp
0044B791     8BEC             mov ebp,esp
0044B793     51               push ecx
0044B794     53               push ebx
0044B795     8D5D FC          lea ebx,dword ptr ss:[ebp-4]
0044B798     A1 DC0B7300      mov eax,dword ptr ds:[730BDC]
0044B79D     8B55 08          mov edx,dword ptr ss:[ebp+8]
0044B7A0     8990 80010000    mov dword ptr ds:[eax+180],edx
0044B7A6     A1 DC0B7300      mov eax,dword ptr ds:[730BDC]
0044B7AB     8B80 8C010000    mov eax,dword ptr ds:[eax+18C]
0044B7B1     50               push eax
0044B7B2     6A FC            push -4
0044B7B4     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7B7     50               push eax
0044B7B8     E8 7FC6FBFF      call manpower.00407E3C               ; jmp to USER32.SetWindowLongA
0044B7BD     6A F0            push -10
0044B7BF     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7C2     50               push eax
0044B7C3     E8 14C4FBFF      call manpower.00407BDC               ; jmp to USER32.GetWindowLongA
0044B7C8     A9 00000040      test eax,40000000
0044B7CD     74 1E            je short manpower.0044B7ED
0044B7CF     6A F4            push -0C
0044B7D1     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7D4     50               push eax
0044B7D5     E8 02C4FBFF      call manpower.00407BDC               ; jmp to USER32.GetWindowLongA
0044B7DA     85C0             test eax,eax
0044B7DC     75 0F            jnz short manpower.0044B7ED
0044B7DE     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7E1     50               push eax
0044B7E2     6A F4            push -0C
0044B7E4     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7E7     50               push eax
0044B7E8     E8 4FC6FBFF      call manpower.00407E3C               ; jmp to USER32.SetWindowLongA
0044B7ED     A1 DC0B7300      mov eax,dword ptr ds:[730BDC]
0044B7F2     50               push eax
0044B7F3     0FB705 AE6B7300  movzx eax,word ptr ds:[736BAE]
0044B7FA     50               push eax
0044B7FB     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B7FE     50               push eax
0044B7FF     E8 08C6FBFF      call manpower.00407E0C               ; jmp to USER32.SetPropA
0044B804     A1 DC0B7300      mov eax,dword ptr ds:[730BDC]
0044B809     50               push eax
0044B80A     0FB705 AC6B7300  movzx eax,word ptr ds:[736BAC]
0044B811     50               push eax
0044B812     8B45 08          mov eax,dword ptr ss:[ebp+8]
0044B815     50               push eax
0044B816     E8 F1C5FBFF      call manpower.00407E0C               ; jmp to USER32.SetPropA
0044B81B     FF75 14          push dword ptr ss:[ebp+14]
0044B81E     FF75 10          push dword ptr ss:[ebp+10]
0044B821     FF75 0C          push dword ptr ss:[ebp+C]
0044B824     FF75 08          push dword ptr ss:[ebp+8]
0044B827     A1 DC0B7300      mov eax,dword ptr ds:[730BDC]
0044B82C     C705 DC0B7300 00>mov dword ptr ds:[730BDC],0
0044B836     FF90 8C010000    call dword ptr ds:[eax+18C]
0044B83C     8945 FC          mov dword ptr ss:[ebp-4],eax
0044B83F     8B03             mov eax,dword ptr ds:[ebx]
0044B841     5B               pop ebx
0044B842     59               pop ecx
0044B843     5D               pop ebp
0044B844     C2 1000          retn 10

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 214
活跃值: (86)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
汗~爆破的好麻烦啊,不如找注册码来个方便~
2005-7-31 13:29
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
最初由 lidazixun 发布
汗~爆破的好麻烦啊,不如找注册码来个方便~


由于是试用的,不提供注册

没地方输注册码啊!
2005-7-31 13:35
0
雪    币: 383
活跃值: (41)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
4
顶,这篇爆破的和其他的那些简单的爆破确实不一样
2005-7-31 14:00
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
楼主:ArmaDumper这个软件在哪下载的?能否提供上来?谢谢!
2005-7-31 19:09
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
最初由 ljy3282393 发布
楼主:ArmaDumper这个软件在哪下载的?能否提供上来?谢谢!

我也想知道在什么地方能下?
2005-7-31 21:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习下 ```
支持 !
看的不是很懂 ``` 晕 `
2005-8-1 00:30
0
雪    币: 97697
活跃值: (200844)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
使用论坛的搜索功能。

Armadillo Dumper v1.0 BY:AvAtAr

http://bbs.pediy.com/showthread.php?s=&threadid=14208&highlight=ArmaDumper
2005-8-1 00:35
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
最初由 ljy3282393 发布
楼主:ArmaDumper这个软件在哪下载的?能否提供上来?谢谢!


忘了,我又无附件上传权限,不过它的文件夹内有个txt,贴上来供参考.我提醒一下,这东东有时也不管用的!

Ace Utilities v2.5.0.4016 (Armadillo Standard)
http://www.acelogix.com

Advanced X Video Converter v3.9.32 (Armadillo Standard+Import Elimination)
http://www.aoamedia.com

AoA DVD Ripper v3.75 (Armadillo Standard+Import Elimination)
http://www.aoamedia.com

AllWebMenus PRO v4.0 (Armadillo Standard+Debug-Blocker+Code Splicing)
http://www.linkno.com

AVI/MPEG/RM/WMV Joiner v4.81 (Armadillo Standard+Code Splicing+Import Elimination)
http://www.boilsoft.com

BearShare Pro v4.7.1.1 (Armadillo Standard)
http://www.bearshare.com

Coding Workshop Ringtone Converter v5.2.4 (Armadillo Standard)
http://www.codingworkshop.com

Coding Workshop Polyphonic Wizard v4.0.3 (Armadillo Standard)
http://www.codingworkshop.com

Flash Optimizer v1.43 (Armadillo Standard+Debug-Blocker+Code Splicing+Nanomites**)
http://www.flashoptimizer.com

HyperCam v2.11.00 (Armadillo Standard+Import Elimination)
http://www.hyperionics.com

HyperSnap-DX v5.62.05 (Armadillo Standard+Import Elimination)
http://www.hyperionics.com

Trojan Remover 6.4.0 (Armadillo Standard+Debug-Blocker+Nanomites**)
http://www.simplysup.com

** This tool don't support nanomites and it's not gonna support it. Even if unpacks the file sucessfully you need to repair the nanomites manually.
2005-8-1 09:08
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
10
按斑竹的找到了:
http://forum.exetools.com/showthread.php?t=7655
2005-8-1 09:28
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习中。。。
2005-8-1 11:16
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
12
这两天看了下有关loader的文章,就用我爆的人事软件试了下.经过次调试竟成功了!详细的见坛里的精华.

用MASMPlus写的loader:

.386
.model flat, stdcall
option casemap:none
include     windows.inc
include     kernel32.inc
include     user32.inc
includelib  user32.lib
includelib  kernel32.lib

PatchBytes  proto :DWORD, :DWORD, :DWORD, :DWORD  

.data
;MsgWaitTitle      db "Waiting",0                  
;MsgWaitText       db "Click OK when program loaded",0 ;

Msgerror          db "Error!",0
Msgcperror        db "File not found!", 0dh, 0ah, "(确定调用程序在同一目录)",0
Msgwperror        db "Error Writing to Memory!",0dh, 0ah, "(如果程序已被调用,则关闭它!)",0
Msgwrongver       db "Wrong Application or Changed!",0dh, 0ah, "(关闭被打开的应用程序!)",0
ProgName          db "manpower.exe",0         ;
OldBytes_1        db 126, 0                   ;修改内存中的数据用十进制,               
NewBytes_1        db 235, 0                   ;如果是标题等处的ASCII字串,放于""之中.           
OldBytes_2        db 124, 0
NewBytes_2        db 235, 0
OldBytes_3        db 240, 0
NewBytes_3        db 252, 0
OldBytes_4        db 85, 0
NewBytes_4        db 195, 0
OldBytes_5        db 232, 212, 12, 212, 255,0                 
NewBytes_5        db 144, 144, 144, 144, 144,0

processInfo PROCESS_INFORMATION <>
startInfo   STARTUPINFO <>
counter           DWORD ?                  
readres           LPSTR ?                    

.code
start:

invoke CreateProcessA, addr ProgName, NULL, NULL, NULL, NULL, CREATE_SUSPENDED, NULL, NULL, addr startInfo, addr processInfo  ;创建W32dsm89.exe进程
        test eax, eax
        jz  MsgFileNotFound
        invoke ResumeThread, dword ptr [processInfo + 4]

  invoke PatchBytes, 006950ffh, addr NewBytes_1, addr OldBytes_1, 1h
   invoke PatchBytes, 00696e9fh, addr NewBytes_2, addr OldBytes_2, 1h
    invoke PatchBytes, 0072a0efh, addr NewBytes_3, addr OldBytes_3, 1h
     invoke PatchBytes, 0072aa40h, addr NewBytes_4, addr OldBytes_4, 1h
      invoke PatchBytes, 0072abf4h, addr NewBytes_4, addr OldBytes_4, 1h
       invoke PatchBytes, 0072af5ch, addr NewBytes_4, addr OldBytes_4, 1h
        invoke PatchBytes, 0072F91Fh, addr NewBytes_5, addr OldBytes_5, 5h     
         
ExitLoader:
        invoke CloseHandle, dword ptr [processInfo]
        invoke CloseHandle, dword ptr [processInfo + 4]
        invoke ExitProcess, NULL
;
MsgWrongVersion:
        lea eax, Msgwrongver
        jmp DisplayMsg
MsgFileNotFound:
        lea eax, Msgcperror
        jmp DisplayMsg
MsgMemWriteError:
        lea eax, Msgwperror
DisplayMsg:
        invoke MessageBoxA, NULL, eax, addr Msgerror, NULL
        jmp ExitLoader

PatchBytes proc MemLoc:DWORD, NewBytes:DWORD, OldBytes:DWORD, NoBytes:DWORD
GetPatchBytes:
        xor ebx, ebx
        mov ebx, dword ptr [NoBytes]  
        mov edi, dword ptr [OldBytes]
        mov counter, 0h               
CheckBytesPresent:
        inc counter
        cmp counter, 200000            ;如果修改不成功,调整循环次数试试.
        jz MsgWrongVersion
         
        invoke ReadProcessMemory, dword ptr [processInfo], dword ptr [MemLoc], addr readres, ebx, NULL   
        pusha
        lea esi, readres
        mov ecx, ebx               
        repe cmpsb      
        popa
        jnz CheckBytesPresent  
        mov eax, dword ptr [NewBytes]
        invoke WriteProcessMemory, dword ptr [processInfo], dword ptr [MemLoc], eax, ebx, NULL   
        test eax, eax
        jz MsgMemWriteError
        ret
PatchBytes endp

end start

感谢:

标 题:如何编写Loader[翻译] (精6)
发信人:nbw
时 间:2004-08-28,02:03
http://www.pediy.com/bbshtml/BBS6/pediy6570.htm

标 题:(译) 内存补丁的制作实例-修改WDASM (精6)
发信人:virtualspace
时 间:2003年10月30日 08:57
http://www.pediy.com/bbshtml/BBS6/pediy6290.htm
2005-9-14 09:30
0
游客
登录 | 注册 方可回帖
返回
//