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

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

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

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

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

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

深绿,你好,有时间的话请帮忙制作一个单字节内核模拟程序。
; r6 v. n0 R3 C! |# ^: P0 ^- B- X( C
8 o& z# F( q7 C4 U题目吓人,其实很简单。7 F) Z3 [# s: v* o* P3 L* i# D. x
在程序里面设定一个固定中文字符串。# O1 ?) x! n8 j5 Q- N
然后按字节读取。小于0x80的字节输出到out.txt文件即可。3 `# z; l  \7 D% q. t$ a

0 k- e( M" L" O" A7 k" }. D这个程序模拟了单字节游戏后输出乱码的情况。
. n+ T0 P  [, @接下去我们可以利用它进行汇编级研究。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

10#
 楼主| 发表于 2009-10-12 16:44 | 只看该作者
引用第8楼深绿于2009-10-12 15:34发表的  :5 e/ n- w/ @  ]/ N
这样看来,对这两种类型的改造方式是一样的,都是让程序在碰到大于0x80的字节时两个两个读取。
' ~3 Z& x9 D4 c8 R" W所不同的是后者由于要做这么个比较的处理,所以更方便我们定位到需要更改的位置。
6 L) |' b0 W" s( R这样的理解对不?

- A& w2 `/ k6 e" o8 o$ }理解完全正确。7 y* H! U% Z% [; N# l
不过,就是简单的和0x80来比较,汇编代码也会有多种形式,不如test,cmp 等等,而且程序里还会有其他和0x80比较的地方,要找到关键的比较点,非常不容易。
( }, v0 K5 r# V/ F: q; k& M0 u5 W3 b1 ?, ~& ?9 w3 l, Q3 z
有一个笨办法,查找2进制码80。如果汇编代码是test,cmp等于语句,那么就有可能是比较点。
7 a9 O' Q+ r' b6 z! W然后逐个nop测试,看有什么变化。
0 r( f7 ?; R! S' ~* G. x* v  n. v/ c5 e- P$ G
你可以参考一下这篇帖子6 E) ?3 [2 H2 a+ D3 S- A) h
游戏汉化中的双字节问题处理原理2 U+ |  [8 v8 T' y  z
https://www.chinaavg.com/read.php?tid=18709
  h1 |, P. m5 \1 r  I: _/ R作者好像是左贤王主力人员。
回复 支持 反对

使用道具 举报

9#
发表于 2009-10-12 15:34 | 只看该作者
这样看来,对这两种类型的改造方式是一样的,都是让程序在碰到大于0x80的字节时两个两个读取。
3 m# K# L8 ?$ a% H9 J7 S1 O/ o9 [所不同的是后者由于要做这么个比较的处理,所以更方便我们定位到需要更改的位置。6 u# J! R2 F  K# `
这样的理解对不?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2009-10-12 13:09 | 只看该作者
其实,单字节内核一般有2种情况。- F  |, b4 _% a+ t; k( t$ I* C
1. 对大于0x80的字节不做任何处理,输出到画面就是一个中文字符会变为2个字符2 ?7 b. A) y/ I- f" s7 I! K$ f: [5 ^& S
2. 跳过大于0x80的字节,读取后一个字节,输出到画面就是中文字符被过滤了
; |" l3 E$ W6 @* s& ?( W" \1 ]" w. M, A* Y) M4 L
真正的游戏应该会用这2种方式中的一种来处理。
% i) ~' X* _2 A这个单字节内核模拟程序其实只模拟了2的情况。
% x& W+ X( `8 {- m& x要模拟1的话就要制作一个图形程序了。
4 \( E3 q+ {+ g) R% o$ w; @+ M8 I# {3 K( O+ q
这个单字节内核模拟程序本身的意义其实不大。
6 Z, h5 |7 G& N+ B3 L$ ?其实我是想开始更多地在汇编层次上研究汉化,当作是抛砖引玉吧。
回复 支持 反对

使用道具 举报

7#
发表于 2009-10-12 11:51 | 只看该作者
MFC是C++的类库吧,我不是很熟悉+ h2 S* h2 D. w) {; o" d

, q. S4 n& o2 ?9 r说说我对单字节内核的看法:4 \4 C( w- S! L' _/ R( ]

8 P: N4 {1 c% E1 x我感觉这个程序并不能很好地模拟单字节内核,因为这个程序只是过滤了一些字符,
( V: z" b3 @' l4 R! D& p8 q2 b然后将剩余的输出到一个文件里。而游戏的内核,很有可能是在输出到屏幕的时候进行的过滤。
' s( y  P8 {: ]+ H; E
6 p5 f) v; h, i1 u  M" d2 o, f% i举个例子:当我们用记事本打开txt看到中文的时候,是记事本将中文打印到屏幕,而如果这不是记事本,是单字节的内核
- }/ p" c9 m% N  L7 }! r4 }就很有可能无法显示中文,尽管那些中文数据都存在。3 R* V" e9 f% ~5 w$ b  J3 f
: \% u2 W" T) h$ C  r: O; R
所以,上面删掉那两行的行为其实没有什么意义,就相当于在源代码中,把判断<0x80的语句删掉,就相当于直接把input.txt的东西完全复制到output.txt里,并没有真正体现单字节内核的意义。因为真正需要考量的输出环节,是在打开记事本,把这些文字输出到屏幕上的过程。
8 S8 l% d7 F& |/ m) y2 e& m/ K
/ c9 ^& J& d6 m/ {+ f1 {$ j因此我很怀疑,游戏是否会用这种(<0x80)过滤方式。
: x5 [% i' O" v' u
+ L. k) h  s+ ^1 _* L! J* t( [, p中文的显示方式是读取2字节—>获得区位码—>在字库中读取数据—>显示汉字。
3 W! [9 Y' k( s$ G7 e' ?* Z& ?
, I& y: r; ^. I6 C; v: l5 O那么英文的应该类似,读取一个字节——获得编码——在字库中读取数据——显示文字5 h- F' \. j, c# l5 k
% O6 u+ N  h; Z2 [8 L4 P
那么当它读取进中文字节时,很有可能是获得的编码在字库中找不到数据,所以自动过滤了。
. P0 ~( d$ F$ c' a0 y: `5 V! a  b
/ s# ^8 H" q. n2 y6 X7 J就我所知,很多内核不支持双字节是因为它不会在读到大于0x80的字节时多读1个字节,而并非直接过滤掉大于0x80的字节
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2009-10-10 22:14 | 只看该作者
在游戏里面,也可以用相同的修改方法,但是由于代码很多,难点在于找到这个比较点。
5 U! I# H( u4 g1 ~' N深绿,你能否把C程序再修改一下,用其他的方法编制出同样功能的程序?
) [6 H9 |# `! \7 @. ^. P& E7 O比如不用fgetc这个标准c函数,而用mfc的类似函数来编。
  s. k1 @  g) `6 P+ `  \让我们看看生成的汇编代码有什么区别。
% b9 Q$ F- e6 g9 g$ o/ m, @你也可以试着修改一下。
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2009-10-10 22:02 | 只看该作者
由于这个程序很短,OD里面的汇编代码也很短。 $ e8 q  T& `/ i$ U+ ]3 S
请看红色的部分,这就是和0x80比较的部分。 , [% I8 n9 i7 ?# L! P9 e
把这2句NOP掉,然后保存修改后的文件为exe。
# r# [1 m  T; L; x: O我们发现input.txt里面的所有内容都能被输出了。 9 L0 H# |/ o, |7 V
附上修改后的exe. 2 O3 b3 k/ y# ~7 s
深绿,你可以把这个操作过程试一下,练习一下.
% U& L+ G- x' h6 L1 `/ ?: d* y5 b) J$ ~! h- a
00401000  /$  55            push    ebp
$ e0 E  H2 c: {/ u* B% F00401001  |.  89E5          mov    ebp, esp   {5 g  c. h9 D: {1 \
00401003  |.  83EC 18      sub    esp, 18 % a! ~" w0 @! z2 {" U
00401006  |.  C745 FC 00000>mov    dword ptr [ebp-4], 0 , g! ?; c6 f* Y2 S
0040100D  |.  83C4 F4      add    esp, -0C 8 T1 e/ n3 R/ ~3 q' ]! f. r
00401010  |.  8D45 FC      lea    eax, dword ptr [ebp-4]
$ Y/ G! x# y. q! B# Z& _00401013  |.  50            push    eax
- w3 X* `0 I% M: h" [1 W: _$ B00401014  |.  FF35 08204000 push    dword ptr [402008]
( b2 W6 {3 S3 S) f2 j( e# x0040101A  |.  8D45 F8      lea    eax, dword ptr [ebp-8]
  Q' a4 W; t2 n8 Z$ l9 ]0040101D  |.  50            push    eax
6 w0 I5 T3 c# c0 l, n0040101E  |.  68 04204000  push    00402004 + D4 m  a% i* M, l! q+ N% _
00401023  |.  68 00204000  push    00402000 . S2 z* b+ |9 Q" r6 I; C, U
00401028  |.  E8 EB030000  call    <jmp.&msvcrt.__getmainargs> $ {7 E' j2 w. C+ d1 c' A9 a
0040102D  |.  C9            leave . q. [& ~: C5 T4 L
0040102E  \\.  C3            retn 7 G$ P( }* L6 g
0040102F      90            nop ) |; d, ?* I4 ]" d
00401030  /$  55            push    ebp ; ^6 t/ V) f' C( v1 |' |
00401031  |.  89E5          mov    ebp, esp
' ^! z7 u! {( |; h: s00401033  |.  83EC 08      sub    esp, 8
4 }  `1 z1 u4 [8 `) }% X00401036  |.  8B15 0C204000 mov    edx, dword ptr [40200C] - \7 X3 D( y1 d+ k
0040103C  |.  85D2          test    edx, edx
$ Y1 _' B5 Y% f0040103E  |.  74 7B        je      short 004010BB
9 Z  e, b% b6 ?" f00401040  |.  A1 AC304000  mov    eax, dword ptr [<&msvcrt._fmode>> ; c3 X9 i- I' V6 w" Q% k: O
00401045  |.  8910          mov    dword ptr [eax], edx
" W) m* G7 Q3 c1 S" w9 h. U+ j00401047  |.  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>]
1 M3 Y& s0 s% u0 o0040104C  |.  85C0          test    eax, eax
( `- A9 s& j; Q, |" M- Q) [, x0040104E  |.  74 1E        je      short 0040106E
- ?) T8 }& J( s# H00401050  |.  83C4 F8      add    esp, -8
! S, ?8 K- }2 R5 C" S00401053  |.  FF35 0C204000 push    dword ptr [40200C] - c( U/ X' V5 n# ^
00401059  |.  83C4 F4      add    esp, -0C 1 O6 a' _/ {; r( m6 m6 r
0040105C  |.  50            push    eax                              ; /pstream => offset msvcrt._iob
5 {7 W! u' d3 F. i, P0040105D  |.  E8 A6030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno 8 J6 |" W0 x! @1 e3 C2 Q' X
00401062  |.  83C4 10      add    esp, 10
% k! ^$ {: W  w: e( ~6 o00401065  |.  50            push    eax                              ; |handle 0 @' `. J# j" O  H! l$ g- R
00401066  |.  E8 A5030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode ) s! r& t$ F( o; {. S! f
0040106B  |.  83C4 10      add    esp, 10 7 y- R. ~- R/ c9 L# O0 W0 W5 ~
0040106E  |>  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>] ( H( Y" h* {+ J( S. q8 q3 c9 J
00401073  |.  83C0 20      add    eax, 20
8 E0 {  P) I9 c00401076  |.  74 1E        je      short 00401096
4 J- l5 v4 |; r; r00401078  |.  83C4 F8      add    esp, -8
8 W9 \& k3 ^0 n6 w. P0040107B  |.  FF35 0C204000 push    dword ptr [40200C]
% j1 s& H; K% y3 C; N: L3 l00401081  |.  83C4 F4      add    esp, -0C
5 N( D, C5 G& [/ ^/ h7 ]: W/ V00401084  |.  50            push    eax                              ; /pstream
- w  a2 b/ Q( O- Q00401085  |.  E8 7E030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno
$ _  o( p( ~5 `8 _' K1 w$ F5 k0040108A  |.  83C4 10      add    esp, 10
) q1 A! c+ Y( ^0040108D  |.  50            push    eax                              ; |handle . v: g( Z4 L! n3 |3 X
0040108E  |.  E8 7D030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode
9 T$ Y0 ~8 H2 H* D9 W0 P) m' ?; ^  b00401093  |.  83C4 10      add    esp, 10
5 {8 l  }2 W! u00401096  |>  A1 B4304000  mov    eax, dword ptr [<&msvcrt._iob>]
+ J: n) i1 V  q3 P! d3 ]  w0040109B  |.  83C0 40      add    eax, 40
+ n" P/ S  A7 I" H) J0040109E  |.  74 1B        je      short 004010BB
# O1 j  a9 E, n: q' z& U004010A0  |.  83C4 F8      add    esp, -8
% R3 j# y8 E; G% j9 C004010A3  |.  FF35 0C204000 push    dword ptr [40200C] # \! @. g8 k2 M# L! t- K- P
004010A9  |.  83C4 F4      add    esp, -0C
) g1 }& U: ^' ^. h, a004010AC  |.  50            push    eax                              ; /pstream ; W+ M0 j+ \2 @. q( l
004010AD  |.  E8 56030000  call    <jmp.&msvcrt._fileno>            ; \\_fileno # R9 z6 ~4 p6 X  S/ ]1 ?
004010B2  |.  83C4 10      add    esp, 10
. y: }9 f* {$ I! a! l$ X6 E8 S004010B5  |.  50            push    eax                              ; |handle 3 D) K5 H& v; y& J$ l
004010B6  |.  E8 55030000  call    <jmp.&msvcrt._setmode>          ; \\_setmode 2 u& q7 k' l6 H  D! ^+ p, ]+ F
004010BB  |>  C9            leave
$ w; e3 l, w  t; ~. U7 U004010BC  \\.  C3            retn . U+ [4 e9 c4 g# ~$ w/ t" i% c9 v6 o. o
004010BD      8D76 00      lea    esi, dword ptr [esi] 4 h' k+ Y1 S7 k0 Z, F% H
004010C0  /.  55            push    ebp
% h& ^) g* N4 ?, @: |5 j+ R4 }004010C1  |.  89E5          mov    ebp, esp
, F! X. [- D8 h+ o004010C3  |.  83EC 10      sub    esp, 10 ' X& u$ B0 |1 d" [5 v
004010C6  |.  56            push    esi ! P* [' {7 U, G$ Q2 W
004010C7  |.  53            push    ebx 6 b6 q+ R+ u* Z# e* H5 ^" \
004010C8  |.  8B45 08      mov    eax, dword ptr [ebp+8]
- B5 `9 s6 C5 F, M4 T1 X9 I6 e/ F6 [) c004010CB  |.  31DB          xor    ebx, ebx 6 q* B( a5 a/ H% X; g% X6 s" Q7 R
004010CD  |.  31F6          xor    esi, esi
& y; ?7 h- r- M7 f( \. n004010CF  |.  8B00          mov    eax, dword ptr [eax] 8 F8 r2 ~6 r9 g$ w
004010D1  |.  8B00          mov    eax, dword ptr [eax] % _% \% x  s' j
004010D3  |.  3D 910000C0  cmp    eax, C0000091
' q, n4 W1 b: f; g/ Q004010D8  |.  77 16        ja      short 004010F0
1 k8 l" v; r; a1 a8 b004010DA  |.  3D 8D0000C0  cmp    eax, C000008D
; B' `  q0 k* [3 [( K1 r004010DF  |.  73 4F        jnb    short 00401130
3 ~1 X9 c$ i$ P9 s: ~% {$ R004010E1  |.  3D 050000C0  cmp    eax, C0000005
( t& z& U3 e" v9 [& {004010E6  |.  74 18        je      short 00401100 7 P+ \) ^! \6 |
004010E8  |.  E9 86000000  jmp    00401173
4 s4 C# k. F4 p* l. X4 b( ]) i004010ED  |  8D76 00      lea    esi, dword ptr [esi]
6 ?" p) E! b1 O* Y004010F0  |>  3D 930000C0  cmp    eax, C0000093 8 n5 w. _) s, Z0 m
004010F5  |.  74 39        je      short 00401130
1 P+ Y  K+ u- h004010F7  |.  3D 940000C0  cmp    eax, C0000094 ' }- b1 d$ A# S' l
004010FC  |.  74 37        je      short 00401135 9 h) O+ A4 o% m4 u, V; ]
004010FE  |.  EB 73        jmp    short 00401173
) V; Z6 M: @9 D3 |00401100  |>  83C4 F8      add    esp, -8 / u) H+ d& _3 S$ O; }/ ~* s$ U- y/ i
00401103  |.  6A 00        push    0                                ; /func = NULL
& c& G( I, u) }* \; R00401105  |.  6A 0B        push    0B                              ; |sig = SIGSEGV ( A* e& F( n3 g
00401107  |.  E8 F4020000  call    <jmp.&msvcrt.signal>            ; \\signal & [' C% d3 T2 v- r# `
0040110C  |.  83C4 10      add    esp, 10
5 J& O; T8 M* U: h) a! }: e# [0040110F  |.  83F8 01      cmp    eax, 1
% T$ |  y, Q, Q/ [00401112  |.  75 0E        jnz    short 00401122
8 L: R5 w/ x2 v5 P$ ^. d. c% h4 M  c00401114  |.  83C4 F8      add    esp, -8 2 R/ w, @3 ^4 A, f3 m
00401117  |.  6A 01        push    1                                ; /func = 00000001 . C9 p+ l% N7 ^5 p. }
00401119  |.  6A 0B        push    0B                              ; |sig = SIGSEGV   l$ R: S* P4 L# S& o- v
0040111B  |.  E8 E0020000  call    <jmp.&msvcrt.signal>            ; \\signal
% V3 x8 R- l5 @1 C6 r00401120  |.  EB 4C        jmp    short 0040116E # t+ p8 ?! i& {5 |
00401122  |>  85C0          test    eax, eax
( @$ Z) ?) c& ~0 [* e! _! X* z% b00401124  |.  74 4D        je      short 00401173
' b0 ~- q7 I3 L. m9 T- Z" g, x. ~00401126  |.  83C4 F4      add    esp, -0C 5 e+ t) p2 O$ Q( B% S- f$ K& {
00401129  |.  6A 0B        push    0B
/ `; x7 r( i* ~8 g0040112B  |.  EB 3F        jmp    short 0040116C
  T2 }8 ?  Y; Z$ E- J6 J0040112D  |  8D76 00      lea    esi, dword ptr [esi] ( D+ ?' X2 h5 u- B8 Y* j
00401130  |>  BE 01000000  mov    esi, 1 + F! N9 t* [5 J$ w! l6 c
00401135  |>  83C4 F8      add    esp, -8
* \' C4 ~+ W  g3 y$ ~- U00401138  |.  6A 00        push    0                                ; /func = NULL % `5 y( a! p- s  P
0040113A  |.  6A 08        push    8                                ; |sig = SIGFPE
2 o! P4 Q7 ]6 X4 p% U6 V9 d0040113C  |.  E8 BF020000  call    <jmp.&msvcrt.signal>            ; \\signal , I6 o; g- ?( ^9 @' ~/ E! v
00401141  |.  83C4 10      add    esp, 10
; y% H/ w! `  ]7 k, r00401144  |.  83F8 01      cmp    eax, 1
$ Q$ J4 s% c1 e& x00401147  |.  75 1A        jnz    short 00401163 - k$ T3 S) Q$ G
00401149  |.  83C4 F8      add    esp, -8
# I: x3 ?) ~6 c# Y9 E* Y0040114C  |.  6A 01        push    1                                ; /func = 00000001 , J' @! ]1 g* n" L0 S% V! r4 F$ V, y
0040114E  |.  6A 08        push    8                                ; |sig = SIGFPE * I/ S6 T- a1 \! E, Y
00401150  |.  E8 AB020000  call    <jmp.&msvcrt.signal>            ; \\signal
" ]* S6 a* T0 m$ z00401155  |.  83C4 10      add    esp, 10 ' E* N" b8 j5 p- r/ ^, t
00401158  |.  85F6          test    esi, esi : G- O' B. L# [
0040115A  |.  74 12        je      short 0040116E 8 ]2 C9 D+ m' f9 }& n
0040115C  |.  E8 97020000  call    <jmp.&msvcrt._fpreset>          ; [_fpreset * l# t  r4 u& w5 O7 w
00401161  |.  EB 0B        jmp    short 0040116E
/ O) ?' e, G7 G% \5 s: A7 A# v7 h$ U* S6 C00401163  |>  85C0          test    eax, eax
& R+ d$ u1 H3 R( X00401165  |.  74 0C        je      short 00401173
/ B) w3 a3 P  J2 w% ^00401167  |.  83C4 F4      add    esp, -0C
/ @0 r  Q7 F% i3 K$ n% [0040116A  |.  6A 08        push    8
) U9 s4 y% n# V8 F, L9 Z0040116C  |>  FFD0          call    eax / N0 c& S7 Z  T# A- L
0040116E  |>  BB FFFFFFFF  mov    ebx, -1
2 {0 O6 u- r& g, {' }5 F00401173  |>  89D8          mov    eax, ebx 2 l' o; v+ w. Z
00401175  |.  8D65 E8      lea    esp, dword ptr [ebp-18] & _/ v& B' G# c; }7 F4 W$ w1 T( h
00401178  |.  5B            pop    ebx 6 T2 ^- v+ r) H0 T  c
00401179  |.  5E            pop    esi
/ i+ B, N) x/ _% J& \* ^0040117A  |.  C9            leave # m# e; X) |, [1 ~$ J! e' @0 q
0040117B  \\.  C2 0400      retn    4 ; b0 U( s6 k; H/ E/ I
0040117E      89F6          mov    esi, esi ! w2 y$ G) \9 Q2 ^4 f) p3 N
00401180  /$  55            push    ebp ) n9 A  t. s' f* k* o1 q" f  H7 I
00401181  |.  89E5          mov    ebp, esp ! e$ Y& O1 G; s2 c' V
00401183  |.  83EC 14      sub    esp, 14
. d. x: L2 I2 u  y8 o00401186  |.  53            push    ebx ( B0 H/ D' a1 D( n
00401187  |.  83C4 F4      add    esp, -0C * P. I9 P! _# J9 N/ d: ~7 Z% s6 z
0040118A  |.  68 C0104000  push    004010C0                        ; /pTopLevelFilter = engoutpu.004010C0
3 R4 P% y8 v+ u& ?0040118F  |.  E8 B4020000  call    <jmp.&KERNEL32.SetUnhandledExcep>; \\SetUnhandledExceptionFilter 2 u/ d% u) \4 `. j
00401194  |.  83C4 FC      add    esp, -4
3 @" `) `. ~- P00401197  |.  E8 5C020000  call    <jmp.&msvcrt._fpreset>          ; [_fpreset
8 [0 b( G$ I  n! Y- G# I: r' J0040119C  |.  E8 5FFEFFFF  call    00401000 : L/ K6 s6 W* _# |. }9 z0 x/ \
004011A1  |.  E8 8AFEFFFF  call    00401030
: u* o5 R- H. N/ {# n2 I004011A6  |.  83C4 FC      add    esp, -4
: A: Z( G% H- E' p4 D004011A9  |.  E8 42020000  call    <jmp.&msvcrt.__p__environ>
9 U! W) ~% ?/ A8 c! D% b- }004011AE  |.  FF30          push    dword ptr [eax] 5 n9 G7 s; x& j9 @7 y  g% w; q  r
004011B0  |.  FF35 04204000 push    dword ptr [402004] ' @1 `! i7 f/ w5 C; ^
004011B6  |.  FF35 00204000 push    dword ptr [402000] 0 q0 M& W# A) b8 z
004011BC  |.  E8 AB000000  call    0040126C 1 x3 m& r) ~! ~4 _
004011C1  |.  89C3          mov    ebx, eax
2 ]1 P0 R- R/ N' U004011C3  |.  83C4 20      add    esp, 20 & A( I: x& x+ P! k- |3 k. X
004011C6  |.  E8 1D020000  call    <jmp.&msvcrt._cexit>            ; [msvcrt._cexit
1 i3 {( d8 c' C0 a004011CB  |.  83C4 F4      add    esp, -0C ' u0 x4 a; h, z3 h9 D
004011CE  |.  53            push    ebx                              ; /ExitCode , p7 ^  ^6 V2 F
004011CF  \\.  E8 7C020000  call    <jmp.&KERNEL32.ExitProcess>      ; \\ExitProcess 2 s: A. p* O( y0 e  X
004011D4 >/$  55            push    ebp ) q$ T+ X5 _$ V2 m2 k4 Z' r& K
004011D5  |.  89E5          mov    ebp, esp ( m8 z/ X+ f( i0 ^/ e( t
004011D7  |.  83EC 08      sub    esp, 8 % [6 @: J. X8 x8 \6 q& E  m: ?1 c
004011DA  |.  83C4 F4      add    esp, -0C
( V' ^: c4 a4 E! A' D004011DD  |.  6A 01        push    1
4 x! Q  N+ u3 l# Q7 M. @/ s. H004011DF  |.  A1 DC304000  mov    eax, dword ptr [<&msvcrt.__set_a> 0 N0 ^9 l: f& `3 T7 k
004011E4  |.  FFD0          call    eax                              ;  <&msvcrt.__set_app_type>
2 \& @6 ?2 E5 c004011E6  |.  E8 95FFFFFF  call    00401180 0 z$ ~2 b- z  i
004011EB  |.  31C0          xor    eax, eax 5 A+ w9 [4 G5 N
004011ED  |.  C9            leave 6 ~3 \, B* C$ M- U! U
004011EE  \\.  C3            retn ) F' `  \. x/ d: E5 h" g
004011EF      90            nop
* ~3 Z4 m3 D0 w! {0 L# r7 M; W004011F0  /.  55            push    ebp
' j) y* [5 [5 u% l004011F1  |.  89E5          mov    ebp, esp
  c- ]! U9 T" b, G( y" U004011F3  |.  83EC 08      sub    esp, 8
- S# Q8 ~# j: i; f, }, ]004011F6  |.  83C4 F4      add    esp, -0C & k. C! w( o7 q7 c# s3 k
004011F9  |.  6A 02        push    2   j6 m. Y1 s3 K6 o- ]* ]6 }3 u0 W
004011FB  |.  A1 DC304000  mov    eax, dword ptr [<&msvcrt.__set_a>
2 l9 `( G( c$ |: \% F" d00401200  |.  FFD0          call    eax                              ;  <&msvcrt.__set_app_type>
& ]7 c0 n+ ^1 d- r6 }3 o) u6 Z00401202  |.  E8 79FFFFFF  call    00401180
6 R/ S5 I: \6 T6 B4 Z7 x6 U00401207  |.  C9            leave
) B! B" k& [4 C- o8 i00401208  \\.  C3            retn # N, z1 r) E& j; l# F; n5 k9 ~
00401209      00            db      00 * v9 @- X5 d' N6 y9 i" \& d
0040120A      00            db      00
  T2 q3 |4 w0 z! I0040120B      00            db      00 + Q: K+ y+ T1 W5 l( E8 r7 d- j* q
0040120C      00            db      00
" b* h/ J9 U" x6 j( S0040120D      00            db      00 , A3 I! g! j5 |8 P" E
0040120E      00            db      00
3 @4 w2 ^4 O3 [7 X; f0040120F      00            db      00 2 ^7 Q) H4 x! F
00401210      72            db      72                              ;  CHAR 'r'
6 Q( m0 X, Y& N00401211      00            db      00
' \4 l1 ?4 m3 m8 h00401212  .  69 6E 70 75 7>ascii  "input.txt",0
+ e. b0 K4 B& K' E# ~1 Y% q' m9 u0040121C  .  43 61 6E 27 7>ascii  "Can't Find input" , H9 _* }4 w( A& b6 {; O* y  F2 p: c
0040122C  .  2E 74 78 74 2>ascii  ".txt!",0
' b! Z4 G/ V' \5 @/ }  Q00401232      77            db      77                              ;  CHAR 'w'
1 H# d' b" S0 T$ N4 r, S00401233      00            db      00
, A& C5 @! }" C1 ^6 v# A00401234  .  6F 75 74 70 7>ascii  "output.txt",0 " X3 Y8 P0 @0 e. i
0040123F  .  43 61 6E 27 7>ascii  "Can't Create out"
; ^0 z. ^' I: \$ t. F* [# w0040124F  .  70 75 74 2E 7>ascii  "put.txt!",0
. y4 |  E3 x1 V$ Q; H: t5 O00401258  .  6F 6E 65 20 6>ascii  "one char outpute"   u; N$ M: r+ x4 F: j. u
00401268  .  64 0A 00      ascii  "d
1 I" m$ S7 W' Z1 k9 s",0
* e) T4 i1 N/ g5 `0040126B      90            nop ) V! s( ~9 h+ ~8 X7 Q& ?, s
0040126C  /$  55            push    ebp
! C( c, `0 f, d0040126D  |.  89E5          mov    ebp, esp 9 B, _6 }6 R  o' }
0040126F  |.  83EC 18      sub    esp, 18
7 J5 n$ r8 G# `9 v1 V00401272  |.  E8 39010000  call    004013B0
: p' \# e8 q& ?6 f' @- Z00401277  |.  83C4 F8      add    esp, -8
: A4 r6 N* I, X8 N4 l* y7 N* t4 O; J0040127A  |.  68 10124000  push    00401210                        ; /mode = "r"
" {" B. U6 s+ J0040127F  |.  68 12124000  push    00401212                        ; |path = "input.txt" 7 X. |& B/ m4 z; F4 N8 {
00401284  |.  E8 AF010000  call    <jmp.&msvcrt.fopen>              ; \\fopen
6 d( G* [7 n& ?/ D; @8 g$ o00401289  |.  83C4 10      add    esp, 10 , [" Y; t* f( V7 G2 `
0040128C  |.  89C0          mov    eax, eax 3 [4 Y; X; X, b, U
0040128E  |.  8945 FC      mov    dword ptr [ebp-4], eax 6 z( k9 T( O; W
00401291  |.  837D FC 00    cmp    dword ptr [ebp-4], 0
) e# T5 k, ~* q; M00401295  |.  75 10        jnz    short 004012A7
* X! U. n8 V5 k00401297  |.  83C4 F4      add    esp, -0C
4 t: d  c: c) r0040129A  |.  68 1C124000  push    0040121C                        ; /format = "Can't Find input.txt!" 2 S7 v* k3 n# E& P% S8 A4 J
0040129F  |.  E8 8C010000  call    <jmp.&msvcrt.printf>            ; \\printf 0 f" a* W3 ~9 C4 P% c8 B4 J
004012A4  |.  83C4 10      add    esp, 10 & D  K3 o, |& G" ]" r9 W- }
004012A7  |>  83C4 F8      add    esp, -8   ^/ p* u" m7 W8 z# T* r9 a
004012AA  |.  68 32124000  push    00401232                        ; /mode = "w"
. |( O# ?9 B( b3 \8 E9 ]3 z) k004012AF  |.  68 34124000  push    00401234                        ; |path = "output.txt"
: h% m) A- A8 H0 `004012B4  |.  E8 7F010000  call    <jmp.&msvcrt.fopen>              ; \\fopen
" w" h* [  O8 Y& ~004012B9  |.  83C4 10      add    esp, 10 + J. ^, C* Y1 d3 h  U& I/ P, n
004012BC  |.  89C0          mov    eax, eax
5 v) H; ]& r: V3 |) y004012BE  |.  8945 F8      mov    dword ptr [ebp-8], eax   b  q  I. c+ R& P( f
004012C1  |.  837D F8 00    cmp    dword ptr [ebp-8], 0
/ ~. |' z3 g4 W$ _3 F004012C5  |.  75 10        jnz    short 004012D7
! p4 z8 D8 F: W8 f( ]004012C7  |.  83C4 F4      add    esp, -0C
6 x4 G& h) B: q" M+ i* c7 h, k004012CA  |.  68 3F124000  push    0040123F                        ; /format = "Can't Create output.txt!"
" p" C2 ~, r) ~7 o! Q004012CF  |.  E8 5C010000  call    <jmp.&msvcrt.printf>            ; \\printf
3 q: `5 ^1 f" M, h  @004012D4  |.  83C4 10      add    esp, 10 9 X; G0 \6 \9 q$ g$ |' C/ z' v
004012D7  |>  83C4 F4      /add    esp, -0C   r) n7 `3 y% V
004012DA  |.  8B45 FC      |mov    eax, dword ptr [ebp-4] : H; \6 n* `! E! |0 r+ `
004012DD  |.  50            |push    eax                            ; /stream
3 L& G  ]' m6 q; `* a9 d004012DE  |.  E8 45010000  |call    <jmp.&msvcrt.fgetc>            ; \\fgetc
! Z3 X1 g6 H# h, o" t. Q004012E3  |.  83C4 10      |add    esp, 10
; W  I6 n/ I# P6 S0 Z+ N/ Q* }$ k004012E6  |.  89C0          |mov    eax, eax
" Z: Z( s% P% U7 J9 `; v7 y004012E8  |.  8945 F4      |mov    dword ptr [ebp-C], eax % p, E- v. X# k: F$ W9 f5 S
004012EB  |.  817D F4 80000>|cmp    dword ptr [ebp-C], 80 , ^3 b% {$ C, w( s: ]9 l
004012F2  |.  7F 23        |jg      short 00401317
% u$ H5 N$ F% `% \2 L- N" z* @
004012F4  |.  83C4 F8      |add    esp, -8
  Y( k5 c: Q, q  [004012F7  |.  8B45 F8      |mov    eax, dword ptr [ebp-8] " |! k8 A/ U) O2 h- v; K' @9 I
004012FA  |.  50            |push    eax                            ; /stream ; @; ]) G/ t% n  N0 N6 S2 Z
004012FB  |.  8B45 F4      |mov    eax, dword ptr [ebp-C]          ; | 3 c/ _9 h/ j; G/ Z' ]1 i
004012FE  |.  50            |push    eax                            ; |c
) {* g1 j. B- t0 W& C  b& t0 @004012FF  |.  E8 1C010000  |call    <jmp.&msvcrt.fputc>            ; \\fputc % Y* x- |( b% l, T
00401304  |.  83C4 10      |add    esp, 10
" \& U- q7 M  R7 [8 ?1 B" E00401307  |.  83C4 F4      |add    esp, -0C ( _; c& p: \1 ^
0040130A  |.  68 58124000  |push    00401258                        ; /format = "one char outputed",LF,""
+ ~. }$ W! P5 g. M7 V( p% N0040130F  |.  E8 1C010000  |call    <jmp.&msvcrt.printf>            ; \\printf 6 B7 [; b! h7 R% ^7 S) K
00401314  |.  83C4 10      |add    esp, 10 ! g. O' |" z' F% c' q8 l7 z
00401317  |>  837D F4 FF    |cmp    dword ptr [ebp-C], -1
. o+ d2 _1 {/ `& P4 e9 S; e0040131B  |.  75 03        |jnz    short 00401320 2 T7 m- C$ D6 R: C# C! d( x
0040131D  |.  EB 03        |jmp    short 00401322 # f" }+ O! [  P  P! V' U0 D) b* Q
0040131F  |  90            |nop # n( V( n& R8 {% Z8 J
00401320  |>^ EB B5        \\jmp    short 004012D7 . M, g: f: O- W, N
00401322  |>  C9            leave 2 L# D8 D1 Z. i6 @1 T1 I: f/ q* G8 e6 v
00401323  \\.  C3            retn ; B% Q' N! l' @6 X- }4 h
00401324      00            db      00
' J# h/ r: Y1 x- r2 @  w; l00401325      00            db      00 : K' I2 t5 m1 T6 O) Y( P
00401326      00            db      00 0 e) U' @8 d& r
00401327      00            db      00 ! ]0 j( B0 R0 @5 V/ n
00401328      00            db      00 4 w" K- }/ q0 i: P' n
00401329      00            db      00 " D! g) T, H4 z* T& c' b( o' T
0040132A      00            db      00
% d' ]# M0 |! Q& J; q0040132B      00            db      00
9 S. f% r3 z  |7 f8 T2 u" w6 v1 o0040132C      00            db      00 4 t$ V0 B: W% f/ F
0040132D      00            db      00
) X/ o+ I4 l* j5 _( @0040132E      00            db      00 3 |$ Y! i; {. k# [
0040132F      00            db      00 1 s% l# [( {6 b! g2 m8 ~* [
00401330  /.  55            push    ebp
; v. f3 t+ ~/ Z2 R" X& M& d00401331  |.  89E5          mov    ebp, esp
/ G( Z6 {. X8 _+ @' D! Z0 `00401333  |.  83EC 08      sub    esp, 8 - Y+ O, Z  |1 ~" q
00401336  |.  A1 10204000  mov    eax, dword ptr [402010]
& k7 x# z: x# v5 ^- b- b- v4 W0040133B  |.  8338 00      cmp    dword ptr [eax], 0
$ R+ s1 q* `+ R, r& S0040133E  |.  74 1D        je      short 0040135D - r  E- R( k2 j0 d, |
00401340  |>  A1 10204000  /mov    eax, dword ptr [402010] 2 U! _2 c% ^, j* k+ ?; Q+ B
00401345  |.  8B00          |mov    eax, dword ptr [eax] ' [+ `% z* p3 c6 U3 E8 Q0 c
00401347  |.  FFD0          |call    eax ! {: t1 ]; ~& C. _+ |; D
00401349  |.  A1 10204000  |mov    eax, dword ptr [402010]
! |$ |+ G; w4 K: v8 e( `: f0040134E  |.  8D50 04      |lea    edx, dword ptr [eax+4]
+ h, P* F! l" R6 M$ \1 j00401351  |.  8915 10204000 |mov    dword ptr [402010], edx
) T( L- i2 Y7 B' ]( Z00401357  |.  8378 04 00    |cmp    dword ptr [eax+4], 0
: B$ x+ q( i7 o  X7 ^- a0 K0040135B  |.^ 75 E3        \\jnz    short 00401340
) t) m4 E+ M4 j8 \0 n; r! \0040135D  |>  C9            leave
6 G) M6 i# Q* {) c$ b3 ^  d0040135E  \\.  C3            retn 1 l( d) L) K- X) e* K" b: E* C6 E9 G
0040135F      90            nop
! ^0 r9 _3 _; j' `/ L00401360  /$  55            push    ebp 2 r8 \* ]0 Q3 j7 q  J3 k0 _2 u: R: S$ I
00401361  |.  89E5          mov    ebp, esp
! Y* K. N& ^9 T& ^00401363  |.  83EC 14      sub    esp, 14
, S. l8 b  P% R: b* I, ^00401366  |.  53            push    ebx 7 W( C9 f! j/ [- @4 k9 `
00401367  |.  A1 58144000  mov    eax, dword ptr [401458] 5 e* O4 E3 w' _( x$ F
0040136C  |.  83F8 FF      cmp    eax, -1 . h/ c, l7 c1 P+ w6 c% P, N: Z1 X
0040136F  |.  75 19        jnz    short 0040138A
$ r' B2 v6 I' Z1 d  g1 T00401371  |.  31C0          xor    eax, eax
4 Z6 T$ Z1 j& z7 U, ^00401373  |.  833D 5C144000>cmp    dword ptr [40145C], 0
2 R1 F' {5 a. T  Z1 y- A0040137A  |.  74 0E        je      short 0040138A 1 G, U! I3 K0 z5 n
0040137C  |.  BA 5C144000  mov    edx, 0040145C
/ Y/ _( T. t+ i( U( X00401381  |>  83C2 04      /add    edx, 4 - D' J2 K4 {+ [! U% C3 U
00401384  |.  40            |inc    eax ) E, K7 E2 r& @6 F, r
00401385  |.  833A 00      |cmp    dword ptr [edx], 0 5 l9 I+ J) D3 F; y- f
00401388  |.^ 75 F7        \\jnz    short 00401381 + ^% a) V* L/ F
0040138A  |>  89C3          mov    ebx, eax
; {1 m- E4 U6 @6 V( w5 R9 I8 Y# t0040138C  |.  85DB          test    ebx, ebx
% q; ^( Z% G7 {) }, m0 }& M0040138E  |.  74 0C        je      short 0040139C
/ P2 P; C% b/ D6 b' G00401390  |>  8B049D 581440>/mov    eax, dword ptr [ebx*4+401458]
5 v$ y$ |  ]$ m0 O$ Y5 c( I* a8 F00401397  |.  FFD0          |call    eax & L# I8 ?* m9 j: x' {! I
00401399  |.  4B            |dec    ebx & x2 I- T. }- s+ ?' M- r% |" K
0040139A  |.^ 75 F4        \\jnz    short 00401390
, t1 K0 n( b' p, w6 a  \0040139C  |>  83C4 F4      add    esp, -0C ; a) i1 k; t% d  Q' B
0040139F  |.  68 30134000  push    00401330                        ; /func = engoutpu.00401330 . `, b6 y$ s6 A: C% }& R1 T
004013A4  |.  E8 97000000  call    <jmp.&msvcrt.atexit>            ; \\atexit ( Y9 k8 ~) A9 ?1 A. W
004013A9  |.  8B5D E8      mov    ebx, dword ptr [ebp-18]
; ?0 k5 a. k! F, @; o+ }7 V  f004013AC  |.  C9            leave 8 N3 A+ c! z( j/ R, G0 r2 R: G
004013AD  \\.  C3            retn . g$ P# D" N# N5 Z# a& v& M" h+ j7 }
004013AE      89F6          mov    esi, esi 8 e* ^1 Y, t- I# d$ V" p# z
004013B0  /$  55            push    ebp 4 b  I( ~2 q% q! W8 `
004013B1  |.  89E5          mov    ebp, esp 4 q0 [/ `* I& d- x) \  g( q& F; P& E
004013B3  |.  83EC 08      sub    esp, 8
5 [) U$ G5 ]- J4 f% y3 X  y0 f6 Z004013B6  |.  833D 14204000>cmp    dword ptr [402014], 0 " m7 h% R# T7 w! O: d
004013BD  |.  75 0F        jnz    short 004013CE
; i8 M! p* k  ~8 V; Q004013BF  |.  C705 14204000>mov    dword ptr [402014], 1 7 |+ r' Q' u/ v7 Y8 k4 u
004013C9  |.  E8 92FFFFFF  call    00401360 1 s! j& {2 s/ u0 _, `4 t& q  W
004013CE  |>  C9            leave ) d  M) I- @* j) R6 r( V
004013CF  \\.  C3            retn
4 c9 P3 x1 h2 l$ I004013D0  .- FF25 AC304000 jmp    dword ptr [<&msvcrt._fmode>]    ;  msvcrt._fmode
% P, z# ?2 q  b3 ~. D7 p004013D6      90            nop
' c- J4 P" P; b  w6 {) S004013D7      90            nop 3 X' j" S6 u5 N& z5 b
004013D8  .- FF25 B4304000 jmp    dword ptr [<&msvcrt._iob>]      ;  msvcrt._iob ; Q' h# f* Z( }: @# ?4 l
004013DE      90            nop
6 Z+ x- ~6 p3 w0 P004013DF      90            nop
+ q7 r7 l: b& c6 ^5 w! u0 `3 H; `$ J004013E0  .- FF25 DC304000 jmp    dword ptr [<&msvcrt.__set_app_ty>;  msvcrt.__set_app_type   [( F$ w* e* N, d- q
004013E6      90            nop # m4 N& W7 @' U7 m% m2 i5 W' E' ?- R0 ]* i
004013E7      90            nop
, G$ X3 E) K: F( ^! \0 Y% h004013E8  $- FF25 A4304000 jmp    dword ptr [<&msvcrt._cexit>]    ;  msvcrt._cexit
" j3 _6 c7 T; B: K- i004013EE      90            nop
4 f) O- }) o' w2 s9 m4 A3 L! t004013EF      90            nop
. B- b) T& E- R1 Z0 V004013F0  $- FF25 D0304000 jmp    dword ptr [<&msvcrt.__p__environ>;  msvcrt.__p__environ
2 \+ {# k$ ^3 V004013F6      90            nop 2 Z. I" U( c- Q: L
004013F7      90            nop ! V, f% s+ K4 O# R
004013F8  $- FF25 B0304000 jmp    dword ptr [<&msvcrt._fpreset>]  ;  msvcrt._fpreset
9 n9 X2 e0 t* F- }$ R- @2 i+ |004013FE      90            nop
# j0 G7 l3 B; s/ S, A3 H$ X004013FF      90            nop & a4 g& R7 N, i; X# Q
00401400  $- FF25 D8304000 jmp    dword ptr [<&msvcrt.signal>]    ;  msvcrt.signal
8 P* L1 g- s( u4 e' I3 N% E00401406      90            nop
. }' |- |+ f' s5 w8 e; o00401407      90            nop
* m/ w# {4 g2 ?5 H& J00401408  $- FF25 A8304000 jmp    dword ptr [<&msvcrt._fileno>]    ;  msvcrt._fileno
/ @0 e3 t3 c) h0040140E      90            nop $ A3 i/ ^: D* j
0040140F      90            nop 6 |' V5 i0 f# D/ ?6 {( J0 q
00401410  $- FF25 B8304000 jmp    dword ptr [<&msvcrt._setmode>]  ;  msvcrt._setmode
9 S7 w: v" B6 k! f00401416      90            nop
. ~) o4 Z5 H; E  Y$ J$ H) |5 _00401417      90            nop
0 y1 p# e! P3 n, n00401418  $- FF25 BC304000 jmp    dword ptr [<&msvcrt.__getmainarg>;  msvcrt.__getmainargs
( I% `, ^, G. k9 F0040141E      90            nop
$ z0 N$ j. j- y7 m0040141F      90            nop
% f* t1 q9 D3 r, \- y00401420  $- FF25 CC304000 jmp    dword ptr [<&msvcrt.fputc>]      ;  msvcrt.putc & B9 d. l7 m3 c
00401426      90            nop * ^- k1 ]' V( H5 ~
00401427      90            nop   N* M5 B7 l3 Q7 D, F1 {9 V
00401428  $- FF25 C4304000 jmp    dword ptr [<&msvcrt.fgetc>]      ;  msvcrt.getc
0 C: [# e, y4 N! b0040142E      90            nop ( Z) B8 e) W0 _( G
0040142F      90            nop * t. [, j2 @- X( D; J7 h! I- c
00401430  $- FF25 D4304000 jmp    dword ptr [<&msvcrt.printf>]    ;  msvcrt.printf 1 G# y( Y- b, |
00401436      90            nop ' l. f, N( }7 ?$ i% i1 q6 p4 B7 {
00401437      90            nop
/ o( I- y& f6 ~/ \  U1 |0 a, J6 c00401438  $- FF25 C8304000 jmp    dword ptr [<&msvcrt.fopen>]      ;  msvcrt.fopen
/ q5 I+ N0 N) o0 r4 G0040143E      90            nop 6 b+ r" c( i% y1 r
0040143F      90            nop 3 x, p$ l$ R& l0 d4 s$ |- ?
00401440  $- FF25 C0304000 jmp    dword ptr [<&msvcrt.atexit>]    ;  msvcrt.atexit # B  u$ O0 ~7 I7 }9 m6 K* t
00401446      90            nop
$ H! T- o* K/ o; S$ l4 E00401447      90            nop
, |6 W" v: o: t9 Z  G8 H00401448  $- FF25 98304000 jmp    dword ptr [<&KERNEL32.SetUnhandl>;  kernel32.SetUnhandledExceptionFilter * G' S. ~" @* B1 ~6 M
0040144E      90            nop
$ a  Y& k$ a2 x3 ~0040144F      90            nop ( m( R7 j& x$ t
00401450  .- FF25 94304000 jmp    dword ptr [<&KERNEL32.ExitProces>;  kernel32.ExitProcess * a6 v. |( I' G6 K
00401456      90            nop
9 N, C, O+ h5 Y5 `) n00401457      90            nop
1 B8 H0 r8 D* z- k00401458  .  FFFFFFFF      dd      FFFFFFFF
0 Q0 H7 @6 I. R8 k( f$ H0040145C  .  00000000      dd      00000000   `# m1 A' u7 P3 v2 Z5 _
00401460      FF            db      FF
8 u2 P* J" o# p, z) B* Z0 d00401461      FF            db      FF
0 q( M# L6 j8 v5 D) D% _. O00401462      FF            db      FF " O7 X/ v$ F- }9 b+ t
00401463      FF            db      FF ; |+ p! K; _4 H, w5 e/ ^
00401464      00            db      00
! G+ C; [( z% H; x, e* V: `  q1 w+ _( e00401465      00            db      00
7 ~9 u' T2 y6 X) z00401466      00            db      00 7 [0 i4 _4 G" [' k( }+ Y
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发表的  :6 f9 b, @' X. J$ l' M
我稍微改了一下程序,包里面有个input.txt和output.txt3 T5 \: e+ u5 E# X% g+ v
先在input.txt里面写入字符串,然后运行程序,就会在output.txt里输出小于0x80的字节) E, W, q  w2 }5 z, l# E
6 v( K% C4 b! s) b
但是我有个疑问,汉字两个字节的机内码都是大于0x80的,这样如果原字节是纯中文的,不就没有字节被输出吗?

0 @; e5 h; R! Q1 L是的,如果输入字符串是中英混合的话,输出的内容就只留下英文了。6 M; w2 E; J' @' \$ l% v
这就模拟了汉化了文本以后,中文字符被过滤的情况。: ~8 y  g, t8 w' T6 T9 O  j
+ {' K, Z) K  J: V5 o' s# M1 @
接下去就可以在汇编级用OD载入,开展研究了。9 t' f( P+ M! q  S' I3 v( w
想办法把和0x80比较的地方去掉就行了。
回复 支持 反对

使用道具 举报

沙发
发表于 2009-10-10 19:10 | 只看该作者
我稍微改了一下程序,包里面有个input.txt和output.txt- m. {; r9 d, ~' K
先在input.txt里面写入字符串,然后运行程序,就会在output.txt里输出小于0x80的字节
" R4 K! o- L' D) ~9 K# ~( n9 ^) |% g" E$ e
但是我有个疑问,汉字两个字节的机内码都是大于0x80的,这样如果原字节是纯中文的,不就没有字节被输出吗?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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