设为首页收藏本站官方微博

汉化任务 【汉化与汇编】单字节内核模拟程序(深绿请进)

[复制链接]
查看: 2892|回复: 9
打印 上一主题 下一主题

[汉化任务] 【汉化与汇编】单字节内核模拟程序(深绿请进)

跳转到指定楼层
楼主
发表于 2009-10-8 17:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

【汉化与汇编】单字节内核模拟程序(深绿请进)

深绿,你好,有时间的话请帮忙制作一个单字节内核模拟程序。/ @1 }' \3 i5 d1 ]# a. h+ E
/ {: c& @7 g0 |6 N! q2 W$ R
题目吓人,其实很简单。
+ a4 t' ]* P# m% [' B在程序里面设定一个固定中文字符串。
/ }- I) }( O: d9 n然后按字节读取。小于0x80的字节输出到out.txt文件即可。
3 m( ]( T" O8 n0 A6 |0 \& z3 a1 ^. i
: H8 p  h+ s& W) _这个程序模拟了单字节游戏后输出乱码的情况。9 L8 c: @2 U: s8 O) k8 t4 t9 a( @
接下去我们可以利用它进行汇编级研究。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

10#
 楼主| 发表于 2009-10-12 16:44 | 只看该作者
引用第8楼深绿于2009-10-12 15:34发表的  :
! A; l! o' ~8 q3 s4 S这样看来,对这两种类型的改造方式是一样的,都是让程序在碰到大于0x80的字节时两个两个读取。/ k4 i; G. @4 K
所不同的是后者由于要做这么个比较的处理,所以更方便我们定位到需要更改的位置。
. ~6 d9 x( `- j# p1 C这样的理解对不?
8 j4 D6 L' }( O, G1 z" e
理解完全正确。
% R1 N1 |* a7 {& {1 ]- q1 K不过,就是简单的和0x80来比较,汇编代码也会有多种形式,不如test,cmp 等等,而且程序里还会有其他和0x80比较的地方,要找到关键的比较点,非常不容易。% D3 q0 M! @6 _2 y
2 d% x) M- ]% U
有一个笨办法,查找2进制码80。如果汇编代码是test,cmp等于语句,那么就有可能是比较点。) c0 R* @% L: h" X5 a* v" Z
然后逐个nop测试,看有什么变化。
$ O* F* ^# r+ F6 G. I( M
- O& t; s/ D, `& G你可以参考一下这篇帖子' `+ _2 V7 @2 e0 |6 x0 I, @
游戏汉化中的双字节问题处理原理
) e" A$ F  T7 r! Mhttps://www.chinaavg.com/read.php?tid=18709& `: y$ {% B6 F
作者好像是左贤王主力人员。
回复 支持 反对

使用道具 举报

9#
发表于 2009-10-12 15:34 | 只看该作者
这样看来,对这两种类型的改造方式是一样的,都是让程序在碰到大于0x80的字节时两个两个读取。
) e4 j* g# y, G( F: k' q. f所不同的是后者由于要做这么个比较的处理,所以更方便我们定位到需要更改的位置。' O9 L0 o' Y/ {1 c2 a9 h$ P
这样的理解对不?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2009-10-12 13:09 | 只看该作者
其实,单字节内核一般有2种情况。
  L1 T* |! G( l% S1. 对大于0x80的字节不做任何处理,输出到画面就是一个中文字符会变为2个字符4 ]$ U2 w8 l9 U% ?
2. 跳过大于0x80的字节,读取后一个字节,输出到画面就是中文字符被过滤了
# k( u3 Y9 L1 Z& H; [; W  d% `, K& o. d* u, x; h9 F, `
真正的游戏应该会用这2种方式中的一种来处理。4 C- z; V* `- ?! }: k6 p, F6 ^: b
这个单字节内核模拟程序其实只模拟了2的情况。& h/ z9 Z; Q( [/ R( |8 c
要模拟1的话就要制作一个图形程序了。* n. |; X7 Q  R" z3 _

$ ~; ^( E% P2 Q$ B/ W/ k" m这个单字节内核模拟程序本身的意义其实不大。
6 d- ^! t1 _/ E; A8 s: `其实我是想开始更多地在汇编层次上研究汉化,当作是抛砖引玉吧。
回复 支持 反对

使用道具 举报

7#
发表于 2009-10-12 11:51 | 只看该作者
MFC是C++的类库吧,我不是很熟悉
  g8 P1 c" }8 ^  g# A! e# g! E: {! Z
( J- U2 g5 V: v- L3 C4 F说说我对单字节内核的看法:
9 t2 W) L5 `  a, c: |9 R7 Z( |+ s
; b5 H' ~- e# C8 P# d我感觉这个程序并不能很好地模拟单字节内核,因为这个程序只是过滤了一些字符,. _# s: b) S/ c
然后将剩余的输出到一个文件里。而游戏的内核,很有可能是在输出到屏幕的时候进行的过滤。
( |, c9 K9 p* _& b; G+ J) q+ L6 R( y
举个例子:当我们用记事本打开txt看到中文的时候,是记事本将中文打印到屏幕,而如果这不是记事本,是单字节的内核
2 K, ]" Y9 d8 t/ w. @就很有可能无法显示中文,尽管那些中文数据都存在。
, P) ^4 b% Q7 _& ^+ J" n" j$ ]7 W7 \3 c! G
所以,上面删掉那两行的行为其实没有什么意义,就相当于在源代码中,把判断<0x80的语句删掉,就相当于直接把input.txt的东西完全复制到output.txt里,并没有真正体现单字节内核的意义。因为真正需要考量的输出环节,是在打开记事本,把这些文字输出到屏幕上的过程。- V+ H5 b5 l! N3 ]9 K
; I' ?. r8 r- `0 v+ G
因此我很怀疑,游戏是否会用这种(<0x80)过滤方式。, F2 B& T2 B4 D* }0 G
* s# j5 G9 s; E6 }9 Q7 Z! A1 K
中文的显示方式是读取2字节—>获得区位码—>在字库中读取数据—>显示汉字。
7 Y( p9 J! z* p+ r- z9 s! @5 {  i8 b" T  T: s6 p. z  ~, Y
那么英文的应该类似,读取一个字节——获得编码——在字库中读取数据——显示文字; O2 i# Q1 E$ j

& l# b% \1 }6 ]' @% I" \那么当它读取进中文字节时,很有可能是获得的编码在字库中找不到数据,所以自动过滤了。
( U- o/ V! M# O4 I* a: b) M6 I
就我所知,很多内核不支持双字节是因为它不会在读到大于0x80的字节时多读1个字节,而并非直接过滤掉大于0x80的字节
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-10-10 22:14 | 只看该作者
在游戏里面,也可以用相同的修改方法,但是由于代码很多,难点在于找到这个比较点。
  C& a+ @/ {& x深绿,你能否把C程序再修改一下,用其他的方法编制出同样功能的程序?. n4 [# r1 e$ G/ z
比如不用fgetc这个标准c函数,而用mfc的类似函数来编。/ ^4 R' b2 Y/ O4 i7 A+ M: h
让我们看看生成的汇编代码有什么区别。- X3 r! J, z8 v, ?: p& F
你也可以试着修改一下。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-10-10 22:02 | 只看该作者
由于这个程序很短,OD里面的汇编代码也很短。
' f) F8 T% i# n. i0 V请看红色的部分,这就是和0x80比较的部分。
4 i0 i2 x; s! [* Z; C把这2句NOP掉,然后保存修改后的文件为exe。
% k- A: |4 B" k8 `我们发现input.txt里面的所有内容都能被输出了。
7 D  {# x5 [+ x( @附上修改后的exe.
* o8 M# L" A. R9 c深绿,你可以把这个操作过程试一下,练习一下. 4 f. [0 m' K$ w

9 ?# k" W+ f  o3 e0 l0 I& ]; ~00401000  /$  55            push    ebp " x. \6 {" i1 a2 M' ^. [* a
00401001  |.  89E5          mov    ebp, esp 7 x# v# B+ ]& F, ^5 {7 d- o/ ^
00401003  |.  83EC 18      sub    esp, 18
. `9 F' e( t( X00401006  |.  C745 FC 00000>mov    dword ptr [ebp-4], 0
0 F& f- B$ w6 o: ]* K# A0040100D  |.  83C4 F4      add    esp, -0C
2 g5 j- `" |$ x" `+ X! H00401010  |.  8D45 FC      lea    eax, dword ptr [ebp-4] % T/ g7 u5 {( ?( Y% d1 }( @! o
00401013  |.  50            push    eax ! ^$ ~  T* O" p- J" w* K  r
00401014  |.  FF35 08204000 push    dword ptr [402008]
% k. i) f: o) h8 P0 K& Q0040101A  |.  8D45 F8      lea    eax, dword ptr [ebp-8]
0 r* r3 x' y0 `2 |1 z  J" l! A. [0040101D  |.  50            push    eax 7 T) J7 v: _2 h/ f1 h, |, w
0040101E  |.  68 04204000  push    00402004 ; C* R) B2 E8 M6 V5 e( ~$ e' g4 D
00401023  |.  68 00204000  push    00402000
4 u& X& E5 v% b0 L00401028  |.  E8 EB030000  call    <jmp.&msvcrt.__getmainargs>   |) ?% ~: }  C( @
0040102D  |.  C9            leave
* J% j, q) t. [" U0040102E  \\.  C3            retn 3 n9 Z( i4 R  H$ r
0040102F      90            nop 7 d, Q$ N: S4 b
00401030  /$  55            push    ebp
% i* y! h; F/ g00401031  |.  89E5          mov    ebp, esp : C! \( @3 J$ d+ I7 V. U: x
00401033  |.  83EC 08      sub    esp, 8
6 W/ u' a  u0 W' b3 l0 h/ d8 r00401036  |.  8B15 0C204000 mov    edx, dword ptr [40200C]
) Y: q. ?; v  ]6 g! \0040103C  |.  85D2          test    edx, edx
9 d; t2 J" ?( c0 \. `  W! g0040103E  |.  74 7B        je      short 004010BB % l. a2 q* B' P
00401040  |.  A1 AC304000  mov    eax, dword ptr [<&msvcrt._fmode>> ( ~! v! Q% I& H( k' S# ?! U
00401045  |.  8910          mov    dword ptr [eax], edx
- o: |" ^8 B1 r' O00401047  |.  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>] 8 @7 l; E* G) J" c. R
0040104C  |.  85C0          test    eax, eax
" K' D' R' j0 k0040104E  |.  74 1E        je      short 0040106E
3 v, k+ S1 J9 m5 U5 y, v) O00401050  |.  83C4 F8      add    esp, -8 , E' y# ?" K; e9 ?+ v7 t
00401053  |.  FF35 0C204000 push    dword ptr [40200C]
9 e% M* q5 ?5 N7 F/ Q8 P. E$ j00401059  |.  83C4 F4      add    esp, -0C % D) e% \( i+ i* S7 Q. M& W' ~9 K
0040105C  |.  50            push    eax                              ; /pstream => offset msvcrt._iob
; W: m" ?$ I0 v& y5 t2 ]* M0040105D  |.  E8 A6030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno
8 N+ X: V4 Z7 X00401062  |.  83C4 10      add    esp, 10 / l9 e2 V# P% [; ]7 }
00401065  |.  50            push    eax                              ; |handle
: s8 Z: t6 r0 z. ]4 g7 {00401066  |.  E8 A5030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode
; o' k8 y7 u' Q* M! z5 i0040106B  |.  83C4 10      add    esp, 10
* w" Y8 x) A" I- ?0040106E  |>  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>] ! B# z) l) z; r
00401073  |.  83C0 20      add    eax, 20 3 x! o/ z8 c% Q+ B8 P; @9 Z2 ?
00401076  |.  74 1E        je      short 00401096
! w& r6 G3 S- U  A00401078  |.  83C4 F8      add    esp, -8
7 v, D  a* D% H( v4 E% c# S& t0040107B  |.  FF35 0C204000 push    dword ptr [40200C] ' `6 T3 d, S5 u5 H1 j0 d; `
00401081  |.  83C4 F4      add    esp, -0C 5 w" X8 F+ G+ i2 ~3 d, W) D) P
00401084  |.  50            push    eax                              ; /pstream
: P  l4 {6 V7 m4 r" S00401085  |.  E8 7E030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno
) U/ o! N! X: G) ^5 N! }( N0040108A  |.  83C4 10      add    esp, 10 % B6 r) H' w3 c+ F( k, P: @, g
0040108D  |.  50            push    eax                              ; |handle
# G$ @8 T5 s6 O0040108E  |.  E8 7D030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode
+ s: I' Z: A% n, g4 p00401093  |.  83C4 10      add    esp, 10
" w/ H' O2 A8 |00401096  |>  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>]
, a0 x. ~+ S3 R+ U7 L0040109B  |.  83C0 40      add    eax, 40
* d& t$ C) M# J6 h1 M2 ~0040109E  |.  74 1B        je      short 004010BB 2 f1 S9 D6 S% R* O  C! {- X
004010A0  |.  83C4 F8      add    esp, -8
1 a& N' U! P- D004010A3  |.  FF35 0C204000 push    dword ptr [40200C]
8 n/ l0 g* G' Y004010A9  |.  83C4 F4      add    esp, -0C 8 H* m" H# Y) W% ^; j% x
004010AC  |.  50            push    eax                              ; /pstream
+ X2 d: F7 ?6 ]: Q- M004010AD  |.  E8 56030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno $ H# B$ u" N3 ]7 [/ d% a) o) p
004010B2  |.  83C4 10      add    esp, 10
1 q. s# o8 ^. s! e) u$ i3 Z004010B5  |.  50            push    eax                              ; |handle
6 _' x/ l4 Q  m  l( z9 |004010B6  |.  E8 55030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode / r/ H2 a0 |5 F1 T) f/ d$ m* k
004010BB  |>  C9            leave
7 X7 ]! f" _4 W" B004010BC  \\.  C3            retn 5 E  S, w4 ?/ z! m- l
004010BD      8D76 00      lea    esi, dword ptr [esi] ( X9 O# L4 ^- i2 G& a
004010C0  /.  55            push    ebp
8 C( |  z* E( |* D' C( k% l004010C1  |.  89E5          mov    ebp, esp $ f0 O( B8 c  r( F
004010C3  |.  83EC 10      sub    esp, 10
: U% L- _7 E% R' m  f, U" Z004010C6  |.  56            push    esi ' B2 n' W- j( n% H
004010C7  |.  53            push    ebx - e' `: i( f& v' W+ d
004010C8  |.  8B45 08      mov    eax, dword ptr [ebp+8] + K# i/ y1 Z. V  l- L
004010CB  |.  31DB          xor    ebx, ebx ; c" R5 U" E! U  x4 v2 |
004010CD  |.  31F6          xor    esi, esi
" d. l, r, G& F$ p- _7 O1 i  E' H004010CF  |.  8B00          mov    eax, dword ptr [eax] ( ~% S9 f0 C7 z: I6 C- z" i9 u3 A
004010D1  |.  8B00          mov    eax, dword ptr [eax]
' m8 x. A3 m, `& t7 J, \. b+ B/ [004010D3  |.  3D 910000C0  cmp    eax, C0000091 $ K, d4 U0 ^; |# I( J
004010D8  |.  77 16        ja      short 004010F0 # J8 E" u+ \/ ], M
004010DA  |.  3D 8D0000C0  cmp    eax, C000008D
6 G( ^5 \  ~! n& ?1 X004010DF  |.  73 4F        jnb    short 00401130 ) s% \9 B6 d) W0 A8 ?9 i6 t4 Z
004010E1  |.  3D 050000C0  cmp    eax, C0000005
% `; a* S9 E, }4 u5 u9 M; F5 }004010E6  |.  74 18        je      short 00401100 * W3 n8 N7 \3 J3 ^% ~+ u3 q1 e6 K
004010E8  |.  E9 86000000  jmp    00401173
6 M% C  Q2 I" J004010ED  |  8D76 00      lea    esi, dword ptr [esi] 9 L. e$ m2 w' E3 N* f4 g  ~' n. r
004010F0  |>  3D 930000C0  cmp    eax, C0000093
! D# e/ a1 B0 c004010F5  |.  74 39        je      short 00401130
3 N  w+ a  I& H; q! O1 J3 v: p, i1 j004010F7  |.  3D 940000C0  cmp    eax, C0000094
4 t. Z: r  Q4 }/ L: i+ p004010FC  |.  74 37        je      short 00401135 * i5 G8 Y/ y4 B. l/ J- E
004010FE  |.  EB 73        jmp    short 00401173
% K# k9 d2 U3 z( D) T00401100  |>  83C4 F8      add    esp, -8
# h1 J$ X' @2 T: d2 H00401103  |.  6A 00        push    0                                ; /func = NULL & f- m8 C1 Y+ W: I. {' v  [" P
00401105  |.  6A 0B        push    0B                              ; |sig = SIGSEGV - X) i5 M2 k" b, U
00401107  |.  E8 F4020000  call    <jmp.&msvcrt.signal>            ; \\signal / x3 V0 N; f7 N; g4 p' C- I2 D
0040110C  |.  83C4 10      add    esp, 10
& E0 ?" p5 V* k3 N8 A0040110F  |.  83F8 01      cmp    eax, 1 7 \0 E) Z8 L. q
00401112  |.  75 0E        jnz    short 00401122
1 M9 @$ {. T3 O4 W+ I  H00401114  |.  83C4 F8      add    esp, -8
% u+ H2 u$ Q+ A* v6 O* ?00401117  |.  6A 01        push    1                                ; /func = 00000001 - P4 z3 ~$ L# k5 Y5 T6 z9 s: S( s1 n& ?
00401119  |.  6A 0B        push    0B                              ; |sig = SIGSEGV
& J1 f2 O& g: ~+ B& F8 a  S0040111B  |.  E8 E0020000  call    <jmp.&msvcrt.signal>            ; \\signal 7 q5 r# }$ u+ p$ n# c' c5 N8 @
00401120  |.  EB 4C        jmp    short 0040116E
) S: [) A+ D, m+ g- B  q00401122  |>  85C0          test    eax, eax 3 A- _# E  [+ G% r/ I
00401124  |.  74 4D        je      short 00401173 ' J# f& u  |0 v) T2 r/ x4 C
00401126  |.  83C4 F4      add    esp, -0C 5 z' _: I2 U9 x4 ]( L; k
00401129  |.  6A 0B        push    0B
2 x  p# L! G3 @6 h9 K0040112B  |.  EB 3F        jmp    short 0040116C
6 q6 `3 F7 F0 T! k0040112D  |  8D76 00      lea    esi, dword ptr [esi]
4 e; O  v# N- @, _3 y: j00401130  |>  BE 01000000  mov    esi, 1
5 q/ o; R- i  t" j$ y6 j00401135  |>  83C4 F8      add    esp, -8
$ y) G* M8 ~: |- \+ m0 S, |# d00401138  |.  6A 00        push    0                                ; /func = NULL
3 p/ R: s! p0 o% S0040113A  |.  6A 08        push    8                                ; |sig = SIGFPE ) m4 G# P6 t6 \. t
0040113C  |.  E8 BF020000  call    <jmp.&msvcrt.signal>            ; \\signal   J8 X# Q: `. Z9 ~5 G6 m7 ?, F
00401141  |.  83C4 10      add    esp, 10
) m8 M% l$ R9 I7 _2 |9 R00401144  |.  83F8 01      cmp    eax, 1
$ U' t+ @, s8 Q2 y& y& p; ~00401147  |.  75 1A        jnz    short 00401163 2 z2 m: O& I& y+ \* }
00401149  |.  83C4 F8      add    esp, -8
% j6 b; J% ~$ a! e# a0040114C  |.  6A 01        push    1                                ; /func = 00000001
2 J& \# J" l: f7 F+ P. K, X0040114E  |.  6A 08        push    8                                ; |sig = SIGFPE 2 [/ g; S, M. _$ M6 t7 c' v/ [
00401150  |.  E8 AB020000  call    <jmp.&msvcrt.signal>            ; \\signal / E* W# c! D; s% K/ t
00401155  |.  83C4 10      add    esp, 10 + Q2 L% Q: a1 D- q8 O. \
00401158  |.  85F6          test    esi, esi
% z6 c, a4 {$ W0040115A  |.  74 12        je      short 0040116E 3 z* f, Q5 b: @2 f
0040115C  |.  E8 97020000  call    <jmp.&msvcrt._fpreset>          ; [_fpreset
0 E& m- i+ A9 z: B00401161  |.  EB 0B        jmp    short 0040116E + d4 P( \2 _9 w; ]% E) w
00401163  |>  85C0          test    eax, eax
8 P" R2 B1 {. B00401165  |.  74 0C        je      short 00401173 / I/ _2 X4 J3 T0 O
00401167  |.  83C4 F4      add    esp, -0C
+ \& E* ?6 C/ O' C0040116A  |.  6A 08        push    8
& L3 S, E4 T& m+ P0040116C  |>  FFD0          call    eax
7 q! P3 o( E; D4 T. n9 ?! f0040116E  |>  BB FFFFFFFF  mov    ebx, -1 % b4 }+ E6 G6 J8 k9 \
00401173  |>  89D8          mov    eax, ebx
& {) _! q0 D- O; ]2 g5 Q00401175  |.  8D65 E8      lea    esp, dword ptr [ebp-18]
6 O% V; j8 b! |- t00401178  |.  5B            pop    ebx
7 u" j' B: I+ M7 _+ B' H# B# d) Z, V; t00401179  |.  5E            pop    esi & `! ^: `- A1 @$ R# H
0040117A  |.  C9            leave
) h8 q3 i, {% k, ?4 {0040117B  \\.  C2 0400      retn    4 $ L) v9 T5 A: X* L) U
0040117E      89F6          mov    esi, esi
/ O1 H/ [- j5 L/ P/ m  a/ v/ G00401180  /$  55            push    ebp & p7 C0 S6 q: Z  J6 }
00401181  |.  89E5          mov    ebp, esp - C8 @. |) a; |7 Y- q( d7 \2 B
00401183  |.  83EC 14      sub    esp, 14 . j6 Y9 l# I2 w% E7 }4 Y, W
00401186  |.  53            push    ebx
" g2 h3 h% W7 k0 J00401187  |.  83C4 F4      add    esp, -0C
) Y8 X9 n# R3 j1 M3 s0040118A  |.  68 C0104000  push    004010C0                        ; /pTopLevelFilter = engoutpu.004010C0 . Q4 o. ~) M$ S+ Y% _
0040118F  |.  E8 B4020000  call    <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter
8 i( r, f/ G) ?  b1 J8 x2 \! a00401194  |.  83C4 FC      add    esp, -4
2 _3 A5 I( G, y2 E) i( U& R! U00401197  |.  E8 5C020000  call    <jmp.&msvcrt._fpreset>          ; [_fpreset 6 D- u/ A5 l# ^( T! ]
0040119C  |.  E8 5FFEFFFF  call    00401000
+ z" l+ J# b  ]004011A1  |.  E8 8AFEFFFF  call    00401030
% y' f2 Z# a3 D  |5 x) j004011A6  |.  83C4 FC      add    esp, -4 . e& D! R$ C! D1 W( y
004011A9  |.  E8 42020000  call    <jmp.&msvcrt.__p__environ>
3 w2 n8 x* R( Y( N2 y2 C* ~+ p004011AE  |.  FF30          push    dword ptr [eax] ( B+ |" @$ E& [% {
004011B0  |.  FF35 04204000 push    dword ptr [402004] ; t+ \9 }, e; E+ N+ M
004011B6  |.  FF35 00204000 push    dword ptr [402000] ( F2 p/ T4 @7 U6 N4 D
004011BC  |.  E8 AB000000  call    0040126C ( W6 m9 V, O' G4 E7 V. |- Q
004011C1  |.  89C3          mov    ebx, eax
8 w+ h, E" H( B0 `. g& _- ^004011C3  |.  83C4 20      add    esp, 20 - `1 N' b& Z2 }% g0 J3 p
004011C6  |.  E8 1D020000  call    <jmp.&msvcrt._cexit>            ; [msvcrt._cexit . W1 F3 w/ I4 o$ a+ S' x
004011CB  |.  83C4 F4      add    esp, -0C
. Y) @  w* ]9 s8 B4 x" W; H5 N; a7 y004011CE  |.  53            push    ebx                              ; /ExitCode
, L2 n! @+ n6 Y004011CF  \\.  E8 7C020000  call    <jmp.&KERNEL32.ExitProcess>      ; \\ExitProcess 5 K3 I# |, i( a3 B% G; Z4 r$ o  n
004011D4 >/$  55            push    ebp
# r5 Z  s  F- s' C004011D5  |.  89E5          mov    ebp, esp
0 d# q$ K  p3 }! O9 p; K- z' a004011D7  |.  83EC 08      sub    esp, 8 % |& g* T" S: }) F) J8 O) e
004011DA  |.  83C4 F4      add    esp, -0C " ]9 p& c8 M& m6 h' U/ G9 n4 }
004011DD  |.  6A 01        push    1 9 m2 E" A3 S3 x  a+ Z: Y
004011DF  |.  A1 DC304000  mov    eax, dword ptr [<&msvcrt.__set_a>
% J: T) n2 d- t' W! R0 x004011E4  |.  FFD0          call    eax                              ;  <&msvcrt.__set_app_type>   g$ t9 p7 x$ Y, O) Z/ A! E6 o* B% w
004011E6  |.  E8 95FFFFFF  call    00401180
6 L7 D" D! o2 G+ x: P6 w004011EB  |.  31C0          xor    eax, eax + x# c+ _( |4 P- m$ A6 {2 }
004011ED  |.  C9            leave
# ^6 k9 D1 R: L  D% x004011EE  \\.  C3            retn
+ d, j8 X; h1 w% C/ Q004011EF      90            nop
5 z9 J3 ?9 v- l; \" e6 ?! E004011F0  /.  55            push    ebp ( T/ ]$ y( i$ j6 V
004011F1  |.  89E5          mov    ebp, esp : n1 Y, Z0 r+ a* Y" m* l3 s( I
004011F3  |.  83EC 08      sub    esp, 8 ' W* [# D2 ^* {. m
004011F6  |.  83C4 F4      add    esp, -0C
2 D  z; Y$ N: X004011F9  |.  6A 02        push    2 2 V5 l6 ]  M! P! R7 m! m# \5 l. E4 B! @
004011FB  |.  A1 DC304000  mov    eax, dword ptr [<&msvcrt.__set_a> # W/ L1 l" ?2 l, s/ u
00401200  |.  FFD0          call    eax                              ;  <&msvcrt.__set_app_type> 4 ~6 U) s  k; Z2 S; v
00401202  |.  E8 79FFFFFF  call    00401180
" R5 L2 f9 i  Y6 A00401207  |.  C9            leave
3 ]# C( Z' g) K/ L" `. b00401208  \\.  C3            retn
. a7 T7 ]0 S* w# O$ O, m00401209      00            db      00 9 `' ]+ |$ `# ?/ R0 O2 q% a; W
0040120A      00            db      00 % R  P) X5 d; k6 {3 @
0040120B      00            db      00
0 J1 ]$ ^2 U, l) k8 X+ }0040120C      00            db      00 ; n+ P* |. K- G/ {1 c+ z* |
0040120D      00            db      00
$ E' Y- {& B6 @& q* |+ n! J# @0040120E      00            db      00
5 }, ]8 F' N1 r0040120F      00            db      00
% z) m+ P( |* U00401210      72            db      72                              ;  CHAR 'r'
0 ^2 _/ L1 t( ]2 g00401211      00            db      00 ' c0 o" j2 J  p, L+ U1 R# m. b
00401212  .  69 6E 70 75 7>ascii  "input.txt",0
  j9 m" z& ^/ l/ i) m0040121C  .  43 61 6E 27 7>ascii  "Can't Find input" " m7 ^# z6 z- M" _- W
0040122C  .  2E 74 78 74 2>ascii  ".txt!",0 & f$ O' w( y- E# j$ Y( Z
00401232      77            db      77                              ;  CHAR 'w' : Y8 R' x! d! S6 T
00401233      00            db      00
+ A3 d) h8 e# P7 \0 b2 W) e00401234  .  6F 75 74 70 7>ascii  "output.txt",0 ! k/ m" ~* T0 X. f* j7 I. r# l
0040123F  .  43 61 6E 27 7>ascii  "Can't Create out" 9 z- q1 v( W8 o0 K) Y1 L
0040124F  .  70 75 74 2E 7>ascii  "put.txt!",0 " U, g" K, F4 B# M) H
00401258  .  6F 6E 65 20 6>ascii  "one char outpute" 1 o1 c1 U: B- B, J5 a
00401268  .  64 0A 00      ascii  "d - R3 w' S2 P& d; K7 v
",0
: G# g% |8 m" |$ \7 L  K, @0040126B      90            nop 5 Z' Q  G( |: m! X8 F8 m
0040126C  /$  55            push    ebp
; M0 f& I/ f9 `# K2 y2 \0040126D  |.  89E5          mov    ebp, esp ( h: Y5 W0 m- Q: o
0040126F  |.  83EC 18      sub    esp, 18 5 B8 ]6 ^- Q% z0 k
00401272  |.  E8 39010000  call    004013B0 2 y& s, `) H2 ]7 [7 _1 b& U
00401277  |.  83C4 F8      add    esp, -8 7 L: [" ?' @6 d# e
0040127A  |.  68 10124000  push    00401210                        ; /mode = "r" $ U0 n0 X" D, D8 p' S  X0 X- E
0040127F  |.  68 12124000  push    00401212                        ; |path = "input.txt" + P4 K1 Y6 J" f: P( S
00401284  |.  E8 AF010000  call    <jmp.&msvcrt.fopen>              ; \\fopen
5 ]4 ^* @0 P9 J) n+ \00401289  |.  83C4 10      add    esp, 10 # Z* i* D# j! C- m) h
0040128C  |.  89C0          mov    eax, eax ( w7 |8 y0 {7 J6 Q" F. _1 n7 g
0040128E  |.  8945 FC      mov    dword ptr [ebp-4], eax ; ^, j+ {3 C6 ]8 r  W* M( @
00401291  |.  837D FC 00    cmp    dword ptr [ebp-4], 0 7 R# r' V1 i7 i9 f: o
00401295  |.  75 10        jnz    short 004012A7 ; t/ x7 n( o0 K& S" z) m2 ?& a5 x8 J' u, j
00401297  |.  83C4 F4      add    esp, -0C & x/ R8 `9 D! ?! Y
0040129A  |.  68 1C124000  push    0040121C                        ; /format = "Can't Find input.txt!"
* n' q6 |2 Y5 ]5 [" R0040129F  |.  E8 8C010000  call    <jmp.&msvcrt.printf>            ; \\printf
( V) ?  s' a. X0 k004012A4  |.  83C4 10      add    esp, 10
2 F" K; e( E7 L1 T* Y# i004012A7  |>  83C4 F8      add    esp, -8
% h. S, W. P8 `* [* V004012AA  |.  68 32124000  push    00401232                        ; /mode = "w" , p$ `1 J) Q+ c* H
004012AF  |.  68 34124000  push    00401234                        ; |path = "output.txt"
7 N2 D) @3 L: l8 I004012B4  |.  E8 7F010000  call    <jmp.&msvcrt.fopen>              ; \\fopen 6 `6 G: v6 K0 i1 V9 e
004012B9  |.  83C4 10      add    esp, 10
3 Y, @* C, q: _9 U2 }* z004012BC  |.  89C0          mov    eax, eax
- J$ h' [$ s; m& A1 A: f004012BE  |.  8945 F8      mov    dword ptr [ebp-8], eax ! P' z/ g1 O: f$ F( A# |
004012C1  |.  837D F8 00    cmp    dword ptr [ebp-8], 0
. b( W9 e. ^# \004012C5  |.  75 10        jnz    short 004012D7   ~: H  U2 l+ u! `* s5 P
004012C7  |.  83C4 F4      add    esp, -0C 1 O1 g, f4 x! u
004012CA  |.  68 3F124000  push    0040123F                        ; /format = "Can't Create output.txt!"
4 l" z. Z+ F! |4 T7 }004012CF  |.  E8 5C010000  call    <jmp.&msvcrt.printf>            ; \\printf 4 D7 X+ g0 [$ V9 E! d
004012D4  |.  83C4 10      add    esp, 10 8 k; ]2 S3 J$ q% ~( ?
004012D7  |>  83C4 F4      /add    esp, -0C
9 C4 M- L' t2 z; `; {004012DA  |.  8B45 FC      |mov    eax, dword ptr [ebp-4] / M9 U/ H6 `, e* \% A3 Q
004012DD  |.  50            |push    eax                            ; /stream / N% i" ^8 s' g' q
004012DE  |.  E8 45010000  |call    <jmp.&msvcrt.fgetc>            ; \\fgetc
; ]% \7 m+ w; j0 ?' e- }  U" M: ?004012E3  |.  83C4 10      |add    esp, 10 7 b( x1 u  J* D+ P3 v8 `) f
004012E6  |.  89C0          |mov    eax, eax * u& t. z" b2 K1 l' B7 i! Q
004012E8  |.  8945 F4      |mov    dword ptr [ebp-C], eax . d* L% U( a- |& W) b0 X
004012EB  |.  817D F4 80000>|cmp    dword ptr [ebp-C], 80 6 i0 v6 c3 f" U- U$ s( V/ U
004012F2  |.  7F 23        |jg      short 00401317

7 X2 E# k/ ?9 u! N. U004012F4  |.  83C4 F8      |add    esp, -8
9 e0 e7 t. ^% J( V3 j8 I7 P* d004012F7  |.  8B45 F8      |mov    eax, dword ptr [ebp-8] / g' e* x! q$ Z" U2 e9 {
004012FA  |.  50            |push    eax                            ; /stream
6 w8 O* M+ s- y004012FB  |.  8B45 F4      |mov    eax, dword ptr [ebp-C]          ; |
) ?5 J8 G- \2 |, M5 s5 u+ ]. o004012FE  |.  50            |push    eax                            ; |c
; @% Y* ]% b' S% L! u004012FF  |.  E8 1C010000  |call    <jmp.&msvcrt.fputc>            ; \\fputc 1 J) F6 _( ^# u0 x) N$ k+ v
00401304  |.  83C4 10      |add    esp, 10 5 G+ |- H0 ]) l5 j9 y  G% p9 |
00401307  |.  83C4 F4      |add    esp, -0C
5 ]  B! n0 U* h0040130A  |.  68 58124000  |push    00401258                        ; /format = "one char outputed",LF,""
5 f8 C- T5 ]- H$ F2 n0040130F  |.  E8 1C010000  |call    <jmp.&msvcrt.printf>            ; \\printf
7 G/ S! v9 N$ F1 w8 u/ W00401314  |.  83C4 10      |add    esp, 10 , V' U8 l, U4 s' l/ L+ J
00401317  |>  837D F4 FF    |cmp    dword ptr [ebp-C], -1 6 S* }$ U% g/ _
0040131B  |.  75 03        |jnz    short 00401320 & ]" q+ J/ \2 I& j3 `- U
0040131D  |.  EB 03        |jmp    short 00401322
- a3 o% G2 O3 i2 K/ I6 Y0040131F  |  90            |nop 3 C. N# R/ a; Q# b  h
00401320  |>^ EB B5        \\jmp    short 004012D7 ; U/ s. ^" m- E# r
00401322  |>  C9            leave 4 x) |& `& [3 E" [5 g3 L/ i* q
00401323  \\.  C3            retn
/ e" G" m6 g7 \$ S0 F00401324      00            db      00 / ~/ H8 d$ @+ l
00401325      00            db      00
, w/ `( }: O  ~& i& N) b8 J, D, |00401326      00            db      00 2 m& Y0 Q- @+ P% D' E+ Y
00401327      00            db      00 ) R1 ^+ l' Q& _, f- N
00401328      00            db      00
" H7 F4 h/ s$ t* P: S9 ]" l00401329      00            db      00
0 |* J6 w, }4 C! C. }8 K0040132A      00            db      00 1 {. v$ Y: V0 ]3 _9 G6 K5 k) a
0040132B      00            db      00
& ?8 X1 X( R( g3 P0040132C      00            db      00
' u' j1 ?' E: a$ a9 c0040132D      00            db      00
6 u) w/ w# m# E8 E% J6 R+ x7 z0040132E      00            db      00
8 _1 A. m0 T9 K  H2 K; c, V0040132F      00            db      00 7 b  g2 K0 D: Y& B- Y* w: y( i
00401330  /.  55            push    ebp
3 z  O6 y0 W. G00401331  |.  89E5          mov    ebp, esp # h3 T1 g' J. X) ^2 M6 B
00401333  |.  83EC 08      sub    esp, 8
9 m. c, f. V! X# G0 @- Q  ~8 ~00401336  |.  A1 10204000  mov    eax, dword ptr [402010] 8 t& f5 g  k! j: t& x  V
0040133B  |.  8338 00      cmp    dword ptr [eax], 0
% _* V: d4 T0 P( b0040133E  |.  74 1D        je      short 0040135D 1 w$ W: _4 e: X2 S0 f
00401340  |>  A1 10204000  /mov    eax, dword ptr [402010] , ?  J& o. _( g) K- W# ]' [
00401345  |.  8B00          |mov    eax, dword ptr [eax]
1 @* {1 K, |7 E& _( t" y0 F* }4 u00401347  |.  FFD0          |call    eax
& y2 v) `# {& f0 {00401349  |.  A1 10204000  |mov    eax, dword ptr [402010] ( h' A) H2 }( a) b! B) c
0040134E  |.  8D50 04      |lea    edx, dword ptr [eax+4]
1 ?1 D* v! q) [! ?5 S4 y00401351  |.  8915 10204000 |mov    dword ptr [402010], edx
) T/ D9 q: W/ v9 {' |; l00401357  |.  8378 04 00    |cmp    dword ptr [eax+4], 0 1 {5 N5 T9 f& O3 X8 n, T' Q
0040135B  |.^ 75 E3        \\jnz    short 00401340 % U( T( C; y" ]6 w1 v* Y2 D  P. ]
0040135D  |>  C9            leave
* `4 A8 ~5 h% u0 r$ S* K0040135E  \\.  C3            retn & a& }7 ^: P2 w6 T- m6 e
0040135F      90            nop 8 [; ^' u2 @- H$ h0 _
00401360  /$  55            push    ebp
$ f& y. E5 }. f6 f! m$ p' u7 Q00401361  |.  89E5          mov    ebp, esp
) L+ I3 B" p1 H00401363  |.  83EC 14      sub    esp, 14
, r6 a  D0 H7 O0 C7 }) y00401366  |.  53            push    ebx
) Q9 K9 c& \$ I00401367  |.  A1 58144000  mov    eax, dword ptr [401458]
8 z+ T5 s" z0 p8 N5 Q) u  Z7 r0040136C  |.  83F8 FF      cmp    eax, -1
) Q" ?) w% J5 n" g' U0040136F  |.  75 19        jnz    short 0040138A
* E5 Q3 F' U: y, A4 E: e6 C00401371  |.  31C0          xor    eax, eax
% m/ A8 t" v0 p( N8 \2 [00401373  |.  833D 5C144000>cmp    dword ptr [40145C], 0 $ N" b1 l  P& Y7 @9 [- m1 M
0040137A  |.  74 0E        je      short 0040138A ( t: J, c, L# V. c7 `* C
0040137C  |.  BA 5C144000  mov    edx, 0040145C
3 [% _2 y4 d+ L; a00401381  |>  83C2 04      /add    edx, 4
& |/ A1 T! R2 n3 y4 Q! _00401384  |.  40            |inc    eax / t' y& U* M& t7 i# s1 T
00401385  |.  833A 00      |cmp    dword ptr [edx], 0
- R6 }( Q; p4 U$ j* {00401388  |.^ 75 F7        \\jnz    short 00401381 * M! D3 w$ t; [9 U* ?$ V4 n
0040138A  |>  89C3          mov    ebx, eax
' X: {* b8 H  |8 ^1 v. ]! V0 L0 f0040138C  |.  85DB          test    ebx, ebx
% [" s' z' ]* \5 ]. Q0040138E  |.  74 0C        je      short 0040139C
! M$ [* d3 W2 R9 _( ^00401390  |>  8B049D 581440>/mov    eax, dword ptr [ebx*4+401458]
' b: h  K' M) o' G, I! S" b00401397  |.  FFD0          |call    eax
( n5 N" Q, A: t( V00401399  |.  4B            |dec    ebx
" W2 p7 P* s2 o& |/ w5 O0 f0040139A  |.^ 75 F4        \\jnz    short 00401390 / k0 A' k6 W/ y! G8 G, ]
0040139C  |>  83C4 F4      add    esp, -0C
! E) t3 q, ?. u4 w0040139F  |.  68 30134000  push    00401330                        ; /func = engoutpu.00401330 3 H0 R7 I5 E8 [& q' b9 m! H; U
004013A4  |.  E8 97000000  call    <jmp.&msvcrt.atexit>            ; \\atexit
! }& _  K3 k  H2 P2 @( D* D9 l004013A9  |.  8B5D E8      mov    ebx, dword ptr [ebp-18] ) X2 {3 m/ _3 K4 g8 w1 q6 s& @
004013AC  |.  C9            leave ' W+ u7 {  G5 H
004013AD  \\.  C3            retn 8 L9 t0 c; w# u3 f; ]
004013AE      89F6          mov    esi, esi , k' _6 P* i# z  q: T) l6 u6 o
004013B0  /$  55            push    ebp   R9 [: X- D, Z$ e' [0 B
004013B1  |.  89E5          mov    ebp, esp 8 e9 d+ ^9 }. n9 M
004013B3  |.  83EC 08      sub    esp, 8 6 ?4 E; h2 l" G6 g' p5 a
004013B6  |.  833D 14204000>cmp    dword ptr [402014], 0 . o& U/ P; v. K
004013BD  |.  75 0F        jnz    short 004013CE
  p4 j7 j' u$ V: _1 r004013BF  |.  C705 14204000>mov    dword ptr [402014], 1 , D5 ?6 K8 t. h3 E' C/ T
004013C9  |.  E8 92FFFFFF  call    00401360 9 Z5 |- t8 y7 ^
004013CE  |>  C9            leave * d. S3 x  c2 h2 }: _' c
004013CF  \\.  C3            retn
, w% M( h: H1 f: p004013D0  .- FF25 AC304000 jmp    dword ptr [<&msvcrt._fmode>]    ;  msvcrt._fmode
. n  [) P% k; O- I4 z004013D6      90            nop
- e8 ^6 [! ^* E004013D7      90            nop
# ^$ |' `( V% Y/ M5 ~004013D8  .- FF25 B4304000 jmp    dword ptr [<&msvcrt._iob>]      ;  msvcrt._iob % C0 h0 K3 ?8 q; E
004013DE      90            nop $ n+ s1 R, h" R( R4 S& N! r
004013DF      90            nop 9 R' O# e7 G  @
004013E0  .- FF25 DC304000 jmp    dword ptr [<&msvcrt.__set_app_ty>;  msvcrt.__set_app_type 3 a  e2 N, O" b1 K8 F* g
004013E6      90            nop
3 i9 z% n  Y) Z- g: ~5 g" W4 R8 L4 @004013E7      90            nop 5 C$ W5 |8 p- h0 h  C
004013E8  $- FF25 A4304000 jmp    dword ptr [<&msvcrt._cexit>]    ;  msvcrt._cexit ( F2 \& {: A3 d
004013EE      90            nop ( M0 W3 g$ ?2 |8 _1 k  Q9 O4 G
004013EF      90            nop
; u: F9 O4 B0 L+ m( z004013F0  $- FF25 D0304000 jmp    dword ptr [<&msvcrt.__p__environ>;  msvcrt.__p__environ * j/ a- o9 [( u9 M+ x+ h+ v. H7 x
004013F6      90            nop ! C! ?- e/ ?0 G/ ^- j6 T
004013F7      90            nop
4 F7 Y7 R/ _$ t2 @+ L004013F8  $- FF25 B0304000 jmp    dword ptr [<&msvcrt._fpreset>]  ;  msvcrt._fpreset & x! W- x7 U$ u  V/ v$ |7 i; V
004013FE      90            nop 4 O2 r! {0 ~/ ]" E( |' W6 |) ~! p* d
004013FF      90            nop
& h* c+ k4 _8 `9 e# |6 `% ?9 u7 Z00401400  $- FF25 D8304000 jmp    dword ptr [<&msvcrt.signal>]    ;  msvcrt.signal
4 y1 u9 a4 W5 ~6 R00401406      90            nop 2 W% G6 Z0 G* _6 X6 E3 Q5 n
00401407      90            nop : A& o1 t! q' _4 Z6 x5 r3 @9 I7 B
00401408  $- FF25 A8304000 jmp    dword ptr [<&msvcrt._fileno>]    ;  msvcrt._fileno 9 j1 ]( V" A# a9 }! V+ B- S9 [
0040140E      90            nop
5 {) @3 L6 w% w- Z+ q0 T0040140F      90            nop
3 t+ f$ A) k# _9 o8 `' D# P00401410  $- FF25 B8304000 jmp    dword ptr [<&msvcrt._setmode>]  ;  msvcrt._setmode
) |5 }' o5 u8 H: ^. e8 z- h. |00401416      90            nop 9 y3 q0 E7 Z  Q( }0 ^( r1 U
00401417      90            nop
3 N$ s/ @5 D  [7 I  Y* r+ d00401418  $- FF25 BC304000 jmp    dword ptr [<&msvcrt.__getmainarg>;  msvcrt.__getmainargs : D) B2 j& }; }1 z
0040141E      90            nop / ^3 d& }: I6 r9 c9 B6 R7 P
0040141F      90            nop
1 G+ }. r9 q$ h. d) F% l& l00401420  $- FF25 CC304000 jmp    dword ptr [<&msvcrt.fputc>]      ;  msvcrt.putc
6 h: @; a3 N  B" X" Q2 D3 d00401426      90            nop
3 w- c1 M7 ^4 @7 K) z( v/ x00401427      90            nop $ O2 h$ n% J" v: W# _* }3 Z, D; q
00401428  $- FF25 C4304000 jmp    dword ptr [<&msvcrt.fgetc>]      ;  msvcrt.getc 0 O3 \" c3 L0 m% V4 r6 U! o
0040142E      90            nop
9 J" O5 [9 Z1 D: Z- ~  ^0040142F      90            nop 2 T3 ~" P# z* t8 a
00401430  $- FF25 D4304000 jmp    dword ptr [<&msvcrt.printf>]    ;  msvcrt.printf
. l3 J. `/ e% v9 l3 m0 _- g/ V: d00401436      90            nop 9 a% b' t  a' L2 t# p/ d$ m
00401437      90            nop
- Q4 S) L& N0 Y00401438  $- FF25 C8304000 jmp    dword ptr [<&msvcrt.fopen>]      ;  msvcrt.fopen
0 M6 t' V6 a( s+ }4 d1 i0040143E      90            nop 3 r  A- t) l& F  e" q
0040143F      90            nop
" ^( z. f$ v* F) F7 q8 _4 ]00401440  $- FF25 C0304000 jmp    dword ptr [<&msvcrt.atexit>]    ;  msvcrt.atexit 8 F. ?% d$ k+ `( |, i
00401446      90            nop ) d- I. G0 Q( Z  S
00401447      90            nop 1 ?6 A9 A+ j- |, U$ @9 f1 u9 e
00401448  $- FF25 98304000 jmp    dword ptr [<&KERNEL32.SetUnhandl>;  kernel32.SetUnhandledExceptionFilter
% t% b" R/ X. X1 p0040144E      90            nop
- V4 F: @1 t" |, V; D& d; L0040144F      90            nop 2 T! _  }. t) W0 r
00401450  .- FF25 94304000 jmp    dword ptr [<&KERNEL32.ExitProces>;  kernel32.ExitProcess
$ }( T% Y' f: M3 D00401456      90            nop
: c1 i& j7 Q' B+ ^1 t! S00401457      90            nop - D! k8 Z" z& F2 T; k% |
00401458  .  FFFFFFFF      dd      FFFFFFFF % u4 G/ \, a) d2 Z; Z
0040145C  .  00000000      dd      00000000 + x/ p) M" [/ l5 |1 @; ]; o* `
00401460      FF            db      FF
! |  B# f0 b/ D- o00401461      FF            db      FF 7 B5 l1 n: w: Q! i
00401462      FF            db      FF
' m7 o( n8 d# d* [7 |00401463      FF            db      FF
( d2 M4 d& M  h! O( e  w& o7 z00401464      00            db      00
  h+ O$ B; {$ ^1 X4 c$ \00401465      00            db      00
( |( D7 w! L- G2 q' b6 t00401466      00            db      00 : k2 u2 M$ D# h* i8 x9 P' N
00401467      00            db      00

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2009-10-10 21:51 | 只看该作者
看了代码,应该把ch<=128 改为 ch<128 吧?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-10-10 21:47 | 只看该作者
引用第1楼深绿于2009-10-10 19:10发表的  :) {3 s, Y, `; f; y4 O
我稍微改了一下程序,包里面有个input.txt和output.txt, D5 U8 d. |" y4 K* _  N7 |# d
先在input.txt里面写入字符串,然后运行程序,就会在output.txt里输出小于0x80的字节9 m7 Z( h0 I8 H1 _
  {& K2 Z$ }, k9 {
但是我有个疑问,汉字两个字节的机内码都是大于0x80的,这样如果原字节是纯中文的,不就没有字节被输出吗?
4 k7 b( d, K- B: _5 e
是的,如果输入字符串是中英混合的话,输出的内容就只留下英文了。" E& A4 H4 O: T, u& I! Z# S
这就模拟了汉化了文本以后,中文字符被过滤的情况。( S" }; p5 G& L1 J3 A$ z
4 g* P# Z0 V# m8 h, k
接下去就可以在汇编级用OD载入,开展研究了。, u( a; g6 {1 ^
想办法把和0x80比较的地方去掉就行了。
回复 支持 反对

使用道具 举报

沙发
发表于 2009-10-10 19:10 | 只看该作者
我稍微改了一下程序,包里面有个input.txt和output.txt+ l% C; b1 ~! i: g7 p
先在input.txt里面写入字符串,然后运行程序,就会在output.txt里输出小于0x80的字节2 j! V: B) b. [2 u% ?- U2 k
4 c6 x2 R# s' k  s2 M3 x! A
但是我有个疑问,汉字两个字节的机内码都是大于0x80的,这样如果原字节是纯中文的,不就没有字节被输出吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表